<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      前言

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

      我個人非常喜歡小規(guī)模團隊的"單打獨斗",有的時候即使在大公司,也是做著3-5個人團隊的小項目,相信不少人有類似的經(jīng)歷。

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

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

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

      *
      我喜歡盡量簡單,容易上手,二次開發(fā)難度別要太大。

      說到開源還是先貼上源碼倉庫吧:https://github.com/2881099/FreeSql.AdminLTE
      <https://github.com/2881099/FreeSql.AdminLTE>,主項目 FreeSql 目前有900多星,歡迎同時給贊,謝謝!

      項目背景

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

      1、Song、Tag 多對多場景,添加/更新 Song 時可以把 Tag 一起保存;

      2、列表頁,希望外鍵、多對多出現(xiàn)在過濾篩選條件;

      3、列表頁,希望枚舉出現(xiàn)在過濾篩選條件;

      等等諸如此類的繁瑣操作,之所以說繁瑣,是因為這些工作技術(shù)不難,屬于嚴重的重復(fù)勞動。

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

      既然 ORM 已經(jīng)對實體進行了配置,利用已存在的條件便利的產(chǎn)生后臺管理功能,真是一大快事??!

      功能庫劃分

      項目 版本
      FreeSql.AdminLTE netstandard2.0、net45
      FreeSql.AdminLTE.Tools netcoreapp2.1
      FreeSql.AdminLTE.Preview netstandard2.0
      三個包產(chǎn)生的 AdminLTE 功能幾乎一樣,都是根據(jù)實體類、導(dǎo)航關(guān)系生成默認的繁瑣的后臺管理功能。

      共同的輸入條件:

      * 實體類的注釋(請開啟項目XML文檔);
      * 實體類的導(dǎo)航屬性配置(可生成繁瑣的常用后臺管理功能)。
      FreeSql.AdminLTE.Preview

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

      使用場景:開發(fā)環(huán)境的測試數(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 實體類配置、導(dǎo)航關(guān)系配置,快速生成基于 MVC + Razor + AdminLTE 的后臺管理系統(tǒng)的增刪查改代碼【支持二次開發(fā)】。

      使用場景:asp.net/asp.netcore 后臺管理系統(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 庫,請手工添加

      重磅功能:FreeSql.AdminLTE.Tools

      什么樣的工具更加高效?

      命令行。。。命令行。。。命令行。。。必須是它?。?!

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

      FreeSql.AdminLTE.Tools 是對 FreeSql.AdminLTE 功能的工具命令化封裝,命令行快速生成代碼。

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

      dotnet tool install -g FreeSql.AdminLTE.Tools

      進入后臺項目(可以是空項目、或已存在的項目),執(zhí)行以下命令

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

      命令行參數(shù) 說明
      -Find * 匹配實體類FullName的正則表達式
      -ControllerNameSpace 控制器命名空間(默認:FreeSql.AdminLTE)
      -ControllerRouteBase 控制器請求路徑前輟(默認:/AdminLTE/)
      -ControllerBase 控制器基類(默認:Controller)
      -First 是否生成 ApiResult.cs、index.html、htm 靜態(tài)資源(首次生成)
      -Output 輸出路徑(默認:當(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)境,在控制臺當(dāng)前目錄的項目下,根據(jù)實體類生成
      AdminLTE 后臺管理功能的相關(guān)文件。 # 生成條件 # 1、實體類的注釋(請開啟項目XML文檔);
      2、實體類的導(dǎo)航屬性配置(可生成繁瑣的常用后臺管理功能)。 # 快速開始 # > FreeSql.AdminLTE.Tools -Find
      MyTest\.Model\..+ -Find * 匹配實體類FullName的正則表達式 -ControllerNameSpace
      控制器命名空間(默認:FreeSql.AdminLTE) -ControllerRouteBase 控制器請求路徑前輟(默認:/AdminLTE/)
      -ControllerBase 控制器基類(默認:Controller) -First 是否生成 ApiResult.cs、index.html、htm
      靜態(tài)資源(首次生成) -Output 輸出路徑(默認:當(dāng)前目錄) # 生成到其他目錄 # > FreeSql.AdminLTE.Tools -Find
      MyTest\.Model\..+ -Output d:/test
      演示

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

      2、打開 cmd,進行 MyProject 目錄,win10 下打開 MyProject 目錄點擊地址欄錄入 cmd 可快速打開 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 上運行
      "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)建幾個常用的實體類,點擊下載演示的實體類
      <https://github.com/2881099/FreeSql.AdminLTE/files/3563842/Model.zip>



      7、確定項目可以編譯通過
      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 個警告 0 個錯誤 已用時間 00:00:01.82
      8、執(zhí)行 FreeSql.AdminLTE.Tools -Find MyProject.Model..+ -First

      請開啟項目 xml 文檔生成功能,再執(zhí)行此操作



      9、運行項目,執(zhí)行 dotnet run

      由于這是一個普通 webapi 項目,沒有開啟靜態(tài)資源訪問,所以請在 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





      感悟

      不是不喜歡用 vue,其實我會用,精不精通另外說。。只是覺得 vue 小規(guī)模作戰(zhàn)不夠快捷。

      FreeSql.AdminLTE.Tools 命令行操作,可快速批量或單個生成實體類 razor + controller
      的增刪查改方法,該命令暫時無法支持 .net framework 項目,asp.net mvc 項目可以考慮引入 FreeSql.AdminLTE
      庫自定義代碼生成。

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

      若有使用疑問請留言,謝謝!

      github: https://github.com/2881099

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          黄频在线观看 | AAA国产高清视频在线观看 | 欧美爆插 | 日本激情视频中文字幕 | 日韩一级视频 | 成人毛片在线 | 几个装修工人把我压在茶几视频 | 涩涩av | 公共yin娃调教h稚嫩 | 国产成人无码视频 |