[开源] FreeSql.AdminLTE.Tools 根据实体类生成后台管理代码
前言
FreeSql 發(fā)布至今已經(jīng)有9個(gè)月,功能漸漸完善,自身的生態(tài)也逐步形成,早在幾個(gè)月前寫(xiě)過(guò)一篇文章《ORM 開(kāi)發(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)目,相信不少人有類(lèi)似的經(jīng)歷。
從上一篇文章可以看出,早先的 FreeSql.AdminLTE 只不過(guò)是花瓶,應(yīng)用場(chǎng)景非常有限,僅僅在開(kāi)發(fā)環(huán)境時(shí)管理測(cè)試數(shù)據(jù)的用途,這之后的幾個(gè)月其實(shí)我基本沒(méi)使用它。。。是不是很尷尬??
本次功能升級(jí)情況有所改觀,且先看完本文內(nèi)容。
我喜歡已有的管理功能,希望可以在默認(rèn)產(chǎn)生的功能上進(jìn)行二次開(kāi)發(fā);
我喜歡盡量簡(jiǎn)單,容易上手,二次開(kāi)發(fā)難度別要太大。
說(shuō)到開(kāi)源還是先貼上源碼倉(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)在過(guò)濾篩選條件;
3、列表頁(yè),希望枚舉出現(xiàn)在過(guò)濾篩選條件;
等等諸如此類(lèi)的繁瑣操作,之所以說(shuō)繁瑣,是因?yàn)檫@些工作技術(shù)不難,屬于嚴(yán)重的重復(fù)勞動(dòng)。
在人員配備苛刻的環(huán)境下,選擇盡量靠工具提高生產(chǎn)效率,這樣我們才有更多的時(shí)間在上班摸魚(yú)。。。
既然 ORM 已經(jīng)對(duì)實(shí)體進(jìn)行了配置,利用已存在的條件便利的產(chǎn)生后臺(tái)管理功能,真是一大快事!!
功能庫(kù)劃分
| FreeSql.AdminLTE | netstandard2.0、net45 |
| FreeSql.AdminLTE.Tools | netcoreapp2.1 |
| FreeSql.AdminLTE.Preview | netstandard2.0 |
三個(gè)包產(chǎn)生的 AdminLTE 功能幾乎一樣,都是根據(jù)實(shí)體類(lèi)、導(dǎo)航關(guān)系生成默認(rèn)的繁瑣的后臺(tái)管理功能。
共同的輸入條件:
- 實(shí)體類(lèi)的注釋(請(qǐng)開(kāi)啟項(xiàng)目XML文檔);
- 實(shí)體類(lèi)的導(dǎo)航屬性配置(可生成繁瑣的常用后臺(tái)管理功能)。
FreeSql.AdminLTE.Preview
.NETCore MVC 中間件,基于 AdminLTE 前端框架動(dòng)態(tài)產(chǎn)生指定 FreeSql 實(shí)體的增刪查改的【預(yù)覽管理功能】。
使用場(chǎng)景:開(kāi)發(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)); }FreeSql.AdminLTE
根據(jù) FreeSql 實(shí)體類(lèi)配置、導(dǎo)航關(guān)系配置,快速生成基于 MVC + Razor + AdminLTE 的后臺(tái)管理系統(tǒng)的增刪查改代碼【支持二次開(kāi)發(fā)】。
使用場(chǎng)景:asp.net/asp.netcore 后臺(tái)管理系統(tǒng)快速生成,二次開(kāi)發(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 代碼依賴(lài) FreeSql.DbContext 庫(kù),請(qǐng)手工添加
重磅功能:FreeSql.AdminLTE.Tools
什么樣的工具更加高效?
命令行。。。命令行。。。命令行。。。必須是它!!!
簡(jiǎn)單介紹一下Global Tools,它是.NET Core 2.1 中一個(gè)初次出現(xiàn)的特性。Global Tools提供了一種方法,讓開(kāi)發(fā)人員編寫(xiě)的.NET Core應(yīng)用可以打包成NuGet包交付。如果.NET Core運(yùn)行在目標(biāo)平臺(tái)上,那么一個(gè)恰當(dāng)打包的Global Tool就可以在那上面運(yùn)行。JavaScript開(kāi)發(fā)人員可能會(huì)發(fā)現(xiàn)一件有趣的事,就是這個(gè)工具直接借鑒了NPM Global Tools。
FreeSql.AdminLTE.Tools 是對(duì) FreeSql.AdminLTE 功能的工具命令化封裝,命令行快速生成代碼。
使用場(chǎng)景:asp.netcore 后臺(tái)管理系統(tǒng)快速生成,二次開(kāi)發(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..+
| -Find | * 匹配實(shí)體類(lèi)FullName的正則表達(dá)式 |
| -ControllerNameSpace | 控制器命名空間(默認(rèn):FreeSql.AdminLTE) |
| -ControllerRouteBase | 控制器請(qǐng)求路徑前輟(默認(rèn):/AdminLTE/) |
| -ControllerBase | 控制器基類(lèi)(默認(rèn):Controller) |
| -First | 是否生成 ApiResult.cs、index.html、htm 靜態(tài)資源(首次生成) |
| -Output | 輸出路徑(默認(rèn):當(dāng)前目錄) |
打開(kāi) 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í)體類(lèi)生成 AdminLTE 后臺(tái)管理功能的相關(guān)文件。# 生成條件 #1、實(shí)體類(lèi)的注釋(請(qǐng)開(kāi)啟項(xiàng)目XML文檔);2、實(shí)體類(lèi)的導(dǎo)航屬性配置(可生成繁瑣的常用后臺(tái)管理功能)。# 快速開(kāi)始 #> FreeSql.AdminLTE.Tools -Find MyTest\.Model\..+-Find * 匹配實(shí)體類(lèi)FullName的正則表達(dá)式-ControllerNameSpace 控制器命名空間(默認(rèn):FreeSql.AdminLTE)-ControllerRouteBase 控制器請(qǐng)求路徑前輟(默認(rèn):/AdminLTE/)-ControllerBase 控制器基類(lèi)(默認(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、打開(kāi) cmd,進(jìn)行 MyProject 目錄,win10 下打開(kāi) MyProject 目錄點(diǎn)擊地址欄錄入 cmd 可快速打開(kāi) cmd,并且目錄為當(dāng)前地址
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í)體類(lèi),點(diǎn)擊下載演示的實(shí)體類(lèi)
7、確定項(xiàng)目可以編譯通過(guò)
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.dllMyProject -> C:\Users\28810\Desktop\MyProject\bin\Debug\netcoreapp2.2\MyProject.Views.dll已成功生成。0 個(gè)警告0 個(gè)錯(cuò)誤已用時(shí)間 00:00:01.828、執(zhí)行 FreeSql.AdminLTE.Tools -Find MyProject.Model..+ -First
請(qǐng)開(kāi)啟項(xiàng)目 xml 文檔生成功能,再執(zhí)行此操作
9、運(yùn)行項(xiàng)目,執(zhí)行 dotnet run
由于這是一個(gè)普通 webapi 項(xiàng)目,沒(méi)有開(kāi)啟靜態(tài)資源訪問(wèn),所以請(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、打開(kāi)瀏覽器訪問(wèn)上一步提示的地址,比如:http://localhost:57844/adminlte/index.html
感悟
不是不喜歡用 vue,其實(shí)我會(huì)用,精不精通另外說(shuō)。。只是覺(jué)得 vue 小規(guī)模作戰(zhàn)不夠快捷。
FreeSql.AdminLTE.Tools 命令行操作,可快速批量或單個(gè)生成實(shí)體類(lèi) 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ǔ)保障。
若有使用疑問(wèn)請(qǐng)留言,謝謝!
github: https://github.com/2881099
轉(zhuǎn)載于:https://www.cnblogs.com/FreeSql/p/11462872.html
總結(jié)
以上是生活随笔為你收集整理的[开源] FreeSql.AdminLTE.Tools 根据实体类生成后台管理代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: IIS下配置PHP遇到Service U
- 下一篇: 2019.03.27【GDOI2019】