FreeSql 發佈至今已經有9個月,功能漸漸完善,自身的生態也逐步造成,早在幾個月前寫過一篇文章《ORM 開發環境之利器:MVC 中間件 FreeSql.AdminLTE》,您能夠先閱讀上一篇文章內容瞭解前因後果,再回到這裏觀看。html
我我的很是喜歡小規模團隊的"單打獨鬥",有的時候即便在大公司,也是作着3-5我的團隊的小項目,相信很多人有相似的經歷。前端
從上一篇文章能夠看出,早先的 FreeSql.AdminLTE 只不過是花瓶,應用場景很是有限,僅僅在開發環境時管理測試數據的用途,這以後的幾個月其實我基本沒使用它。。。是否是很尷尬??vue
本次功能升級狀況有所改觀,且先看完本文內容。git
說到開源仍是先貼上源碼倉庫吧:https://github.com/2881099/FreeSql.AdminLTE,主項目 FreeSql 目前有900多星,歡迎同時給贊,謝謝!github
對於通用後臺管理系統的生成,除了單純的對單表 crud 操做外,我還喜歡有外鍵的操做,好比:web
一、Song、Tag 多對多場景,添加/更新 Song 時能夠把 Tag 一塊兒保存;正則表達式
二、列表頁,但願外鍵、多對多出如今過濾篩選條件;sql
三、列表頁,但願枚舉出如今過濾篩選條件;shell
等等諸如此類的繁瑣操做,之因此說繁瑣,是由於這些工做技術不難,屬於嚴重的重複勞力。api
在人員配備苛刻的環境下,選擇儘可能靠工具提升生產效率,這樣咱們纔有更多的時間在上班摸魚。。。
既然 ORM 已經對實體進行了配置,利用已存在的條件便利的產生後臺管理功能,真是一大快事!!
項目 | 版本 |
---|---|
FreeSql.AdminLTE | netstandard2.0、net45 |
FreeSql.AdminLTE.Tools | netcoreapp2.1 |
FreeSql.AdminLTE.Preview | netstandard2.0 |
三個包產生的 AdminLTE 功能幾乎同樣,都是根據實體類、導航關係生成默認的繁瑣的後臺管理功能。
共同的輸入條件:
.NETCore MVC 中間件,基於 AdminLTE 前端框架動態產生指定 FreeSql 實體的增刪查改的【預覽管理功能】。
使用場景:開發環境的測試數據生產。
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 實體類配置、導航關係配置,快速生成基於 MVC + Razor + AdminLTE 的後臺管理系統的增刪查改代碼【支持二次開發】。
使用場景:asp.net/asp.netcore 後臺管理系統快速生成,二次開發【自定義】。
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 庫,請手工添加
什麼樣的工具更加高效?
命令行。。。命令行。。。命令行。。。必須是它!!!
簡單介紹一下Global Tools,它是.NET Core 2.1 中一個初次出現的特性。Global Tools提供了一種方法,讓開發人員編寫的.NET Core應用能夠打包成NuGet包交付。若是.NET Core運行在目標平臺上,那麼一個恰當打包的Global Tool就能夠在那上面運行。JavaScript開發人員可能會發現一件有趣的事,就是這個工具直接借鑑了NPM Global Tools。
FreeSql.AdminLTE.Tools 是對 FreeSql.AdminLTE 功能的工具命令化封裝,命令行快速生成代碼。
使用場景:asp.netcore 後臺管理系統快速生成,二次開發。
dotnet tool install -g FreeSql.AdminLTE.Tools
進入後臺項目(能夠是空項目、或已存在的項目),執行如下命令
FreeSql.AdminLTE.Tools -Find MyTest.Model..+
命令行參數 | 說明 |
---|---|
-Find | * 匹配實體類FullName的正則表達式 |
-ControllerNameSpace | 控制器命名空間(默認:FreeSql.AdminLTE) |
-ControllerRouteBase | 控制器請求路徑前輟(默認:/AdminLTE/) |
-ControllerBase | 控制器基類(默認:Controller) |
-First | 是否生成 ApiResult.cs、index.html、htm 靜態資源(首次生成) |
-Output | 輸出路徑(默認:當前目錄) |
打開 command 命令行,執行效果以下:
>dotnet tool install -g FreeSql.AdminLTE.Tools 可以使用如下命令調用工具: FreeSql.AdminLTE.Tools 已成功安裝工具「freesql.adminlte.tools」(版本「0.9.4」)。 >FreeSql.AdminLTE.Tools ____ ____ __ / __/ ____ ___ ___ / __/ ___ _ / / / _/ / __// -_)/ -_) _\ \ / _ `/ / / /_/ /_/ \__/ \__/ /___/ \_, / /_/ /_/ # Github # https://github.com/2881099/FreeSql 基於 .NETCore 2.1 環境,在控制檯當前目錄的項目下,根據實體類生成 AdminLTE 後臺管理功能的相關文件。 # 生成條件 # 一、實體類的註釋(請開啓項目XML文檔); 二、實體類的導航屬性配置(可生成繁瑣的經常使用後臺管理功能)。 # 快速開始 # > FreeSql.AdminLTE.Tools -Find MyTest\.Model\..+ -Find * 匹配實體類FullName的正則表達式 -ControllerNameSpace 控制器命名空間(默認:FreeSql.AdminLTE) -ControllerRouteBase 控制器請求路徑前輟(默認:/AdminLTE/) -ControllerBase 控制器基類(默認:Controller) -First 是否生成 ApiResult.cs、index.html、htm 靜態資源(首次生成) -Output 輸出路徑(默認:當前目錄) # 生成到其餘目錄 # > FreeSql.AdminLTE.Tools -Find MyTest\.Model\..+ -Output d:/test
一、在桌面建立目錄:MyProject
二、打開 cmd,進行 MyProject 目錄,win10 下打開 MyProject 目錄點擊地址欄錄入 cmd 可快速打開 cmd,而且目錄爲當前地址
三、執行 dotnet new webapi
C:\Users\28810\Desktop\MyProject>dotnet new webapi 已成功建立模板「ASP.NET Core Web API」。 正在處理建立後操做... 正在 C:\Users\28810\Desktop\MyProject\MyProject.csproj 上運行 "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 內完成。 還原成功。
四、執行 dotnet add package FreeSql.Provider.Sqlite
五、執行 dotnet add package FreeSql.DbContext
六、建立幾個經常使用的實體類,點擊下載演示的實體類
七、肯定項目能夠編譯經過
C:\Users\28810\Desktop\MyProject>dotnet build 用於 .NET Core 的 Microsoft (R) 生成引擎版本 15.9.20+g88f5fadfbe 版權全部(C) Microsoft Corporation。保留全部權利。 C:\Users\28810\Desktop\MyProject\MyProject.csproj 的還原在 65.32 ms 內完成。 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 個警告 0 個錯誤 已用時間 00:00:01.82
八、執行 FreeSql.AdminLTE.Tools -Find MyProject.Model..+ -First
請開啓項目 xml 文檔生成功能,再執行此操做
九、運行項目,執行 dotnet run
因爲這是一個普通 webapi 項目,沒有開啓靜態資源訪問,因此請在 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(); } }
十、打開瀏覽器訪問上一步提示的地址,好比:http://localhost:57844/adminlte/index.html
不是不喜歡用 vue,其實我會用,精不精通另外說。。只是以爲 vue 小規模做戰不夠快捷。
FreeSql.AdminLTE.Tools 命令行操做,可快速批量或單個生成實體類 razor + controller 的增刪查改方法,該命令暫時沒法支持 .net framework 項目,asp.net mvc 項目能夠考慮引入 FreeSql.AdminLTE 庫自定義代碼生成。
FreeSql.AdminLTE 後續可更新的內容很小,感興趣的小夥伴,能夠採用一樣的模式作 FreeSql.ElementUI 也不是也可能,對吧?反正有 FreeSql 提供基礎保障。
如有使用疑問請留言,謝謝!
github: https://github.com/2881099