[開源] FreeSql.AdminLTE.Tools 根據實體類生成后臺管理代碼

前言

FreeSql 發布至今已經有9個月,功能漸漸完善,自身的生態也逐步形成,早在幾個月前寫過一篇文章《ORM 開發環境之利器:MVC 中間件 FreeSql.AdminLTE》,您可以先閱讀上一篇文章內容了解來龍去脈,再回到這里觀看。

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

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

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

  • 我喜歡已有的管理功能,希望可以在默認產生的功能上進行二次開發;

  • 我喜歡盡量簡單,容易上手,二次開發難度別要太大。

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

項目背景

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

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

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

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

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

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

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

功能庫劃分

項目版本
FreeSql.AdminLTEnetstandard2.0、net45
FreeSql.AdminLTE.Toolsnetcoreapp2.1
FreeSql.AdminLTE.Previewnetstandard2.0

三個包產生的 AdminLTE 功能幾乎一樣,都是根據實體類、導航關系生成默認的繁瑣的后臺管理功能。

共同的輸入條件:

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

FreeSql.AdminLTE.Preview

.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));
}

image

image

FreeSql.AdminLTE

根據 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 庫,請手工添加

重磅功能:FreeSql.AdminLTE.Tools

什么樣的工具更加高效?

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

簡單介紹一下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 后臺管理功能的相關文件。# 生成條件 #1、實體類的注釋(請開啟項目XML文檔);2、實體類的導航屬性配置(可生成繁瑣的常用后臺管理功能)。# 快速開始 #> 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

演示

1、在桌面創建目錄:MyProject

2、打開 cmd,進行 MyProject 目錄,win10 下打開 MyProject 目錄點擊地址欄錄入 cmd 可快速打開 cmd,并且目錄為當前地址

31407-20190902032700917-1927141278.png

3、執行 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 內完成。還原成功。

4、執行 dotnet add package FreeSql.Provider.Sqlite

5、執行 dotnet add package FreeSql.DbContext

6、創建幾個常用的實體類,點擊下載演示的實體類

31407-20190902033628504-1802138798.png

7、確定項目可以編譯通過

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.dllMyProject -> C:\Users\28810\Desktop\MyProject\bin\Debug\netcoreapp2.2\MyProject.Views.dll已成功生成。0 個警告0 個錯誤已用時間 00:00:01.82

8、執行 FreeSql.AdminLTE.Tools -Find MyProject.Model..+ -First

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

31407-20190902033715851-1578368593.png

9、運行項目,執行 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();}
}

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

31407-20190902031707299-253471606.png

31407-20190902031747320-501611212.png

感悟

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

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

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

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

github: https://github.com/2881099

轉載于:https://www.cnblogs.com/FreeSql/p/11462872.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447864.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447864.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447864.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新駕考科目三-2014新交規科目三大路考試技巧

新駕考科目三考試內容及變化&#xff1a; A、上車準備;B、起步;C、直線行駛; D、加減擋位操作;E、變更車道; F、靠邊停車;G、直行通過路口; H、路口左轉彎;I、路口右轉彎;J、通過人行橫道線;K、通過學校區域;L、通過公共汽車站;M、會車; N、超車;P、掉頭;Q、夜間行駛。增加了加…

《小狗錢錢》:理財首先應該有一種強烈的意識

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 《小狗錢錢》讀完了。以下是個人覺得很有幫助和啟發意義的摘抄。 1) "忽視就是一種認輸"。2) 并非困難使我們放棄&#xff0c…

R語言 plot()函數 基礎用法

plot(xx軸數據,yy軸數據,main"標題",sub"子標題"&#xff0c;type"線型",xlab"x軸名稱"&#xff0c;ylab"y軸名稱"&#xff0c;xlim c(x軸范圍&#xff0c;x軸范圍),ylim c(y軸范圍,y軸范圍)) 轉載于:https://www.cnblogs…

廣州駕校考試實際道路考試注意事項(圖)

導讀&#xff1a;面對實際道路考試時&#xff0c;大家都會有些緊張&#xff0c;因為這個科目不再只是面對場地&#xff0c;而是要面對各種狀況和各種車輛&#xff0c;也是獲取駕照的最后一個關卡。因此&#xff0c;為了讓大家掌握考試的整個流程&#xff0c;網為大家帶來科目四…

《 Docker 進階與實戰 》 讀書筆記

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 以下內容全文出自書目&#xff1a;《 Docker 進階與實戰 》 1. Docker 定義&#xff1a;一個開源的容器引擎&#xff0c;可以方便地對容…

農村女人與城市女人的差別

1、農村女孩20歲結婚當媽很普遍&#xff0c;城市女孩三十多歲做剩女很普遍。 2、農村女孩對男方主要談彩禮和家庭條件;城市女孩對男方主要談房子和車子。 3、農村女人婚后不管經濟條件如何立馬生孩子&#xff0c;且基本上是兩胎以上;城市女人婚后得看條件計劃生孩子&…

【轉】R語言函數總結

原博&#xff1b;R語言與數據挖掘&#xff1a;公式&#xff1b;數據&#xff1b;方法R語言特征 對大小寫敏感通常&#xff0c;數字&#xff0c;字母&#xff0c;. 和 _都是允許的(在一些國家還包括重音字母)。不過&#xff0c;一個命名必須以 . 或者字母開頭&#xff0c;并且如…

《工作前5年,決定你一生的財富》三公子TXT,PDF,epub,mobi,azw3,kindle電子書下載

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 去年收到編輯出書的邀約&#xff0c;想讓我把這些年的理財心得做個整理&#xff0c;跟學習理財的朋友一起分享。其實&#xff0c;收到邀…

潛藏在人體體內的12種毒素

人的身體內有12大毒素為細菌的增殖和侵襲鋪好了道路。百病不生&#xff0c;就得清除身體內的12毒素。身體內有哪些毒素以及百病不生的解決方法&#xff1a; 體內毒素1.壞膽固醇 壞膽固醇主要表現為&#xff1a;初期沒有自覺癥狀&#xff0c;出現黃色瘤(淡黃色的脂肪腫塊)時…

const型數據小結

以下面Time類為例&#xff1b; #include<iostream> using namespace std; class Time { public:Time(int,int,int);void fun();int hour; int minute; int sec; }; Time::Time(int h,int m,int s) { hourh; minutem; secs; }; 形 式 含 義 Tim…

《趨勢的力量》-- 觀念決定了個人發展的戰略路線(大學生選擇專業、就業、考研與否的建議)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 最近幾天看了好幾本書&#xff0c;其中這一本個人覺得很有啟發意義。于是記錄一二。 主體大綱&#xff1a; -------------------------…

廣州交警發布科目三電子路考操作要點

眼看著駕考科目三正式實施新考法的日子就要來了&#xff0c;不少在4月15日之后考試的學員開始著急了&#xff0c;這科目三的電子考到底考什么&#xff1f;不僅學員說不清楚&#xff0c;許多駕校教練也說不清楚&#xff0c;他們只能根據經驗猜想個大概。現在好了&#xff0c;官方…

中間件 - 初識

中間件 - 初識 ? 在Java項目實際開發中&#xff0c;我們所使用的ActiveMQ、RibbitMQ、Kafka、Tomcat、WebLogic&#xff0c;這些都可以統稱為中間件。 ? 我們初次去了解&#xff0c;什么是中間件? 一、中間件簡介 ? 什么是中間件&#xff1f; ? 由于業務、機構和技術是不斷…

VUE 解決:Property or method “deleteFun“ is not defined on the instance but referenced during render.

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 一個點擊事件報錯&#xff1a; Property or method "deleteFun" is not defined on the instance but referenced during…

廣州交警發布路考秘籍 科目三扣分點近80項

科目三扣分點近80項 設定13種不合格情形 電子路考16日將正式全面實行&#xff0c;昨日&#xff0c;廣州市交警部門發布《科目三路考系統操作指南和評判標準》。據不完全統計&#xff0c;人工評判加上計算機評判&#xff0c;扣分點多達近80項&#xff0c;還設定了13種情形一律不…

js中動態引入css樣式文件

function loadStyles(url) {var link document.createElement("link");link.rel "stylesheet";link.type "text/css";link.href url;var head document.getElementsByTagName("head")[0];head.appendChild(link); } 使用&#xf…

java 字符串拆分成單個字符放到 list 集合

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 解決方法&#xff1a; 例如把“我是誰”拆開放到list中 public static void main(String args[]) {String verify"我是誰";…

修改滾動條的樣式

<style>.innerbox{overflow-y: auto;background-color: #f8f8f8;height: 200px;padding: 10px;}.innerbox::-webkit-scrollbar {/*滾動條整體樣式*/width: 4px; /*高寬分別對應橫豎滾動條的尺寸*/height: 4px;scrollbar-arrow-color:red;}.innerbox::-webkit-scrollb…

2014年廣州科目三道路駕駛技能考試/廣汕路科目三路考系統操作和評判指南

一 上車準備 上車準備操作要點&#xff1a; 繞車一周&#xff0c;觀察車輛外觀和周圍環境&#xff0c;確認安全。 考生繞車一周&#xff0c;檢查輪胎氣壓、輪胎磨損情況、輪胎螺栓有無松動&#xff0c;檢查有無漏水、漏油等情況&#xff0c;車輛外觀有無凹凸等碰撞情況&…

滾動條插件nicescroll的使用

https://www.hangge.com/blog/cache/detail_1931.html 使用&#xff1a; 需要引入jQuery插件和 jquery.nicescroll.js插件 修改滾動條&#xff1a; $("#thecondMenu_container").niceScroll({   cursorcolor: "#b3b3b3",   background: "#eee&quo…