前言
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)前地址
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í)體類
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í)行此操作
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
感悟
不是不喜歡用 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