[開源] FreeSql.AdminLTE.Tools 根據(jù)實(shí)體類生成后臺(tái)管理代碼

前言

FreeSql 發(fā)布至今已經(jīng)有9個(gè)月醇份,功能漸漸完善阿弃,自身的生態(tài)也逐步形成,早在幾個(gè)月前寫過一篇文章《ORM 開發(fā)環(huán)境之利器:MVC 中間件 FreeSql.AdminLTE》,您可以先閱讀上一篇文章內(nèi)容了解來(lái)龍去脈臭增,再回到這里觀看。

我個(gè)人非常喜歡小規(guī)模團(tuán)隊(duì)的"單打獨(dú)斗"竹习,有的時(shí)候即使在大公司誊抛,也是做著3-5個(gè)人團(tuán)隊(duì)的小項(xiàng)目,相信不少人有類似的經(jīng)歷整陌。

從上一篇文章可以看出拗窃,早先的 FreeSql.AdminLTE 只不過是花瓶,應(yīng)用場(chǎng)景非常有限泌辫,僅僅在開發(fā)環(huán)境時(shí)管理測(cè)試數(shù)據(jù)的用途随夸,這之后的幾個(gè)月其實(shí)我基本沒使用它。震放。宾毒。是不是很尷尬?殿遂?

本次功能升級(jí)情況有所改觀诈铛,且先看完本文內(nèi)容。

  • 我喜歡已有的管理功能勉躺,希望可以在默認(rèn)產(chǎn)生的功能上進(jìn)行二次開發(fā);

  • 我喜歡盡量簡(jiǎn)單觅丰,容易上手饵溅,二次開發(fā)難度別要太大。

說(shuō)到開源還是先貼上源碼倉(cāng)庫(kù)吧:https://github.com/2881099/FreeSql.AdminLTE妇萄,主項(xiàng)目 FreeSql 目前有900多星蜕企,歡迎同時(shí)給贊,謝謝冠句!

項(xiàng)目背景

對(duì)于通用后臺(tái)管理系統(tǒng)的生成轻掩,除了單純的對(duì)單表 crud 操作外,我還喜歡有外鍵的操作懦底,比如:

1唇牧、Song、Tag 多對(duì)多場(chǎng)景聚唐,添加/更新 Song 時(shí)可以把 Tag 一起保存丐重;

2、列表頁(yè)杆查,希望外鍵扮惦、多對(duì)多出現(xiàn)在過濾篩選條件;

3亲桦、列表頁(yè)崖蜜,希望枚舉出現(xiàn)在過濾篩選條件浊仆;

等等諸如此類的繁瑣操作,之所以說(shuō)繁瑣豫领,是因?yàn)檫@些工作技術(shù)不難抡柿,屬于嚴(yán)重的重復(fù)勞動(dòng)。

在人員配備苛刻的環(huán)境下氏堤,選擇盡量靠工具提高生產(chǎn)效率沙绝,這樣我們才有更多的時(shí)間在上班摸魚。鼠锈。闪檬。

既然 ORM 已經(jīng)對(duì)實(shí)體進(jìn)行了配置,利用已存在的條件便利的產(chǎn)生后臺(tái)管理功能购笆,真是一大快事4置酢!

功能庫(kù)劃分

項(xiàng)目 版本
FreeSql.AdminLTE netstandard2.0同欠、net45
FreeSql.AdminLTE.Tools netcoreapp2.1
FreeSql.AdminLTE.Preview netstandard2.0

三個(gè)包產(chǎn)生的 AdminLTE 功能幾乎一樣样傍,都是根據(jù)實(shí)體類、導(dǎo)航關(guān)系生成默認(rèn)的繁瑣的后臺(tái)管理功能铺遂。

FreeSql 以 MIT 開源協(xié)議托管于 github:https://github.com/2881099/FreeSql

共同的輸入條件:

  • 實(shí)體類的注釋(請(qǐng)開啟項(xiàng)目XML文檔)衫哥;
  • 實(shí)體類的導(dǎo)航屬性配置(可生成繁瑣的常用后臺(tái)管理功能)。

FreeSql.AdminLTE.Preview

.NETCore MVC 中間件襟锐,基于 AdminLTE 前端框架動(dòng)態(tài)產(chǎn)生指定 FreeSql 實(shí)體的增刪查改的【預(yù)覽管理功能】撤逢。

使用場(chǎng)景:開發(fā)環(huán)境的測(cè)試數(shù)據(jù)生產(chǎn)。

dotnet add package FreeSql.AdminLTE.Preview

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IFreeSql>(fsql);
}

public void Configure(IApplicationBuilder app)
{
    app.UseFreeAdminLtePreview("/testadmin/",
        typeof(TestDemo01.Entitys.Song),
        typeof(TestDemo01.Entitys.Tag));
}

[圖片上傳失敗...(image-45a1bd-1583809306065)]

[圖片上傳失敗...(image-8f1205-1583809306065)]

FreeSql.AdminLTE

根據(jù) FreeSql 實(shí)體類配置粮坞、導(dǎo)航關(guān)系配置蚊荣,快速生成基于 MVC + Razor + AdminLTE 的后臺(tái)管理系統(tǒng)的增刪查改代碼【支持二次開發(fā)】。

使用場(chǎng)景:asp.net/asp.netcore 后臺(tái)管理系統(tǒng)快速生成莫杈,二次開發(fā)【自定義】互例。

dotnet add package FreeSql.AdminLTE

using (var gen = new FreeSql.AdminLTE.Generator(new GeneratorOptions()))
{
    gen.Build("d:/test/", new[] { typeof(TestDemo01.Entitys.Song) }, false);
}

提醒!提醒筝闹!提醒媳叨!

生成后的 Controller、Razor 代碼依賴 FreeSql.DbContext 庫(kù)关顷,請(qǐng)手工添加

重磅功能:FreeSql.AdminLTE.Tools

什么樣的工具更加高效肩杈?

命令行。解寝。扩然。命令行。聋伦。夫偶。命令行界睁。。兵拢。必須是它7濉!说铃!

簡(jiǎn)單介紹一下Global Tools访惜,它是.NET Core 2.1 中一個(gè)初次出現(xiàn)的特性。Global Tools提供了一種方法腻扇,讓開發(fā)人員編寫的.NET Core應(yīng)用可以打包成NuGet包交付债热。如果.NET Core運(yùn)行在目標(biāo)平臺(tái)上,那么一個(gè)恰當(dāng)打包的Global Tool就可以在那上面運(yùn)行幼苛。JavaScript開發(fā)人員可能會(huì)發(fā)現(xiàn)一件有趣的事窒篱,就是這個(gè)工具直接借鑒了NPM Global Tools。

FreeSql.AdminLTE.Tools 是對(duì) FreeSql.AdminLTE 功能的工具命令化封裝舶沿,命令行快速生成代碼墙杯。

使用場(chǎng)景:asp.netcore 后臺(tái)管理系統(tǒng)快速生成,二次開發(fā)括荡。

dotnet tool install -g FreeSql.AdminLTE.Tools


進(jìn)入后臺(tái)項(xiàng)目(可以是空項(xiàng)目高镐、或已存在的項(xiàng)目),執(zhí)行以下命令

FreeSql.AdminLTE.Tools -Find MyTest.Model..+

命令行參數(shù) 說(shuō)明
-Find * 匹配實(shí)體類FullName的正則表達(dá)式
-ControllerNameSpace 控制器命名空間(默認(rèn):FreeSql.AdminLTE)
-ControllerRouteBase 控制器請(qǐng)求路徑前輟(默認(rèn):/AdminLTE/)
-ControllerBase 控制器基類(默認(rèn):Controller)
-First 是否生成 ApiResult.cs畸冲、index.html嫉髓、htm 靜態(tài)資源(首次生成)
-Output 輸出路徑(默認(rèn):當(dāng)前目錄)

打開 command 命令行,執(zhí)行效果如下:

>dotnet tool install -g FreeSql.AdminLTE.Tools
可使用以下命令調(diào)用工具: FreeSql.AdminLTE.Tools
已成功安裝工具“freesql.adminlte.tools”(版本“0.9.4”)召夹。

>FreeSql.AdminLTE.Tools
        ____                   ____         __
       / __/  ____ ___  ___   / __/ ___ _  / /
      / _/   / __// -_)/ -_) _\ \  / _ `/ / /
     /_/    /_/   \__/ \__/ /___/  \_, / /_/
                                    /_/


  # Github # https://github.com/2881099/FreeSql


    基于 .NETCore 2.1 環(huán)境岩喷,在控制臺(tái)當(dāng)前目錄的項(xiàng)目下恕沫,根據(jù)實(shí)體類生成 AdminLTE 后臺(tái)管理功能的相關(guān)文件监憎。

  # 生成條件 #

    1、實(shí)體類的注釋(請(qǐng)開啟項(xiàng)目XML文檔)婶溯;
    2鲸阔、實(shí)體類的導(dǎo)航屬性配置(可生成繁瑣的常用后臺(tái)管理功能)。

  # 快速開始 #

    > FreeSql.AdminLTE.Tools -Find MyTest\.Model\..+

        -Find                  * 匹配實(shí)體類FullName的正則表達(dá)式

        -ControllerNameSpace   控制器命名空間(默認(rèn):FreeSql.AdminLTE)
        -ControllerRouteBase   控制器請(qǐng)求路徑前輟(默認(rèn):/AdminLTE/)
        -ControllerBase        控制器基類(默認(rèn):Controller)

        -First             是否生成 ApiResult.cs迄委、index.html褐筛、htm 靜態(tài)資源(首次生成)
        -Output                輸出路徑(默認(rèn):當(dāng)前目錄)

  # 生成到其他目錄 #

    > FreeSql.AdminLTE.Tools -Find MyTest\.Model\..+ -Output d:/test

演示

1、在桌面創(chuàng)建目錄:MyProject

2叙身、打開 cmd渔扎,進(jìn)行 MyProject 目錄,win10 下打開 MyProject 目錄點(diǎn)擊地址欄錄入 cmd 可快速打開 cmd信轿,并且目錄為當(dāng)前地址

image

3晃痴、執(zhí)行 dotnet new webapi

C:\Users\28810\Desktop\MyProject>dotnet new webapi
已成功創(chuàng)建模板“ASP.NET Core Web API”残吩。

正在處理創(chuàng)建后操作...
正在 C:\Users\28810\Desktop\MyProject\MyProject.csproj 上運(yùn)行 "dotnet restore"...
  正在還原 C:\Users\28810\Desktop\MyProject\MyProject.csproj 的包...
  正在生成 MSBuild 文件 C:\Users\28810\Desktop\MyProject\obj\MyProject.csproj.nuget.g.props。
  正在生成 MSBuild 文件 C:\Users\28810\Desktop\MyProject\obj\MyProject.csproj.nuget.g.targets倘核。
  C:\Users\28810\Desktop\MyProject\MyProject.csproj 的還原在 1.11 sec 內(nèi)完成泣侮。

還原成功。

4紧唱、執(zhí)行 dotnet add package FreeSql.Provider.Sqlite

5活尊、執(zhí)行 dotnet add package FreeSql.DbContext

6、創(chuàng)建幾個(gè)常用的實(shí)體類漏益,點(diǎn)擊下載演示的實(shí)體類

image

7蛹锰、確定項(xiàng)目可以編譯通過

C:\Users\28810\Desktop\MyProject>dotnet build
用于 .NET Core 的 Microsoft (R) 生成引擎版本 15.9.20+g88f5fadfbe
版權(quán)所有(C) Microsoft Corporation。保留所有權(quán)利遭庶。

  C:\Users\28810\Desktop\MyProject\MyProject.csproj 的還原在 65.32 ms 內(nèi)完成宁仔。
  MyProject -> C:\Users\28810\Desktop\MyProject\bin\Debug\netcoreapp2.2\MyProject.dll
  MyProject -> C:\Users\28810\Desktop\MyProject\bin\Debug\netcoreapp2.2\MyProject.Views.dll

已成功生成。
    0 個(gè)警告
    0 個(gè)錯(cuò)誤

已用時(shí)間 00:00:01.82

8峦睡、執(zhí)行 FreeSql.AdminLTE.Tools -Find MyProject.Model..+ -First

請(qǐng)開啟項(xiàng)目 xml 文檔生成功能翎苫,再執(zhí)行此操作

image

9、運(yùn)行項(xiàng)目榨了,執(zhí)行 dotnet run

由于這是一個(gè)普通 webapi 項(xiàng)目煎谍,沒有開啟靜態(tài)資源訪問,所以請(qǐng)?jiān)?Startup.cs 中修改:

public class Startup
{
    public Startup()
    {
        Fsql = new FreeSql.FreeSqlBuilder()
            .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|/test.db;Pooling=true;Max Pool Size=5")
            .UseAutoSyncStructure(true)
            .Build();
    }
    public static IFreeSql Fsql { get; private set; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSingleton<IFreeSql>(Fsql);
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
    {
        app.UseDeveloperExceptionPage();
        app.UseMvc();
        app.UseDefaultFiles();
        app.UseStaticFiles();
    }
}

10龙屉、打開瀏覽器訪問上一步提示的地址呐粘,比如:http://localhost:57844/adminlte/index.html

image
image

感悟

不是不喜歡用 vue,其實(shí)我會(huì)用转捕,精不精通另外說(shuō)作岖。。只是覺得 vue 小規(guī)模作戰(zhàn)不夠快捷五芝。

FreeSql.AdminLTE.Tools 命令行操作痘儡,可快速批量或單個(gè)生成實(shí)體類 razor + controller 的增刪查改方法,該命令暫時(shí)無(wú)法支持 .net framework 項(xiàng)目枢步,asp.net mvc 項(xiàng)目可以考慮引入 FreeSql.AdminLTE 庫(kù)自定義代碼生成沉删。

FreeSql.AdminLTE 后續(xù)可更新的內(nèi)容很小,感興趣的小伙伴醉途,可以采用同樣的模式做 FreeSql.ElementUI 也不是也可能矾瑰,對(duì)吧?反正有 FreeSql 提供基礎(chǔ)保障隘擎。

若有使用疑問請(qǐng)留言殴穴,謝謝!

github: https://github.com/2881099

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市采幌,隨后出現(xiàn)的幾起案子恍涂,更是在濱河造成了極大的恐慌,老刑警劉巖植榕,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件再沧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡尊残,警方通過查閱死者的電腦和手機(jī)炒瘸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)寝衫,“玉大人顷扩,你說(shuō)我怎么就攤上這事∥恳悖” “怎么了隘截?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)汹胃。 經(jīng)常有香客問我婶芭,道長(zhǎng),這世上最難降的妖魔是什么着饥? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任犀农,我火速辦了婚禮,結(jié)果婚禮上宰掉,老公的妹妹穿的比我還像新娘呵哨。我一直安慰自己,他們只是感情好轨奄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布孟害。 她就那樣靜靜地躺著,像睡著了一般挪拟。 火紅的嫁衣襯著肌膚如雪挨务。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天舞丛,我揣著相機(jī)與錄音耘子,去河邊找鬼果漾。 笑死球切,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绒障。 我是一名探鬼主播吨凑,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鸵钝?” 一聲冷哼從身側(cè)響起糙臼,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎恩商,沒想到半個(gè)月后变逃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怠堪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年揽乱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粟矿。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凰棉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出陌粹,到底是詐尸還是另有隱情撒犀,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布掏秩,位于F島的核電站或舞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蒙幻。R本人自食惡果不足惜嚷那,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦欠拾、人聲如沸错蝴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春蚌斩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背范嘱。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工送膳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丑蛤。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓叠聋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親受裹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子碌补,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容