前言介紹
喜歡小規(guī)模團(tuán)隊(duì)的"單打獨(dú)斗",有的時(shí)候即使在大公司遣钳,也經(jīng)常做著3-5個(gè)人團(tuán)隊(duì)的小項(xiàng)目扰魂,相信很多人有類似的經(jīng)歷。
本文介紹如何將項(xiàng)目中已存在的【實(shí)體類】蕴茴,直接生產(chǎn)出 CRUD 后臺(tái)管理界面劝评。
對(duì)于通用后臺(tái)管理系統(tǒng)的生成,除了單純的對(duì)單表 crud 操作外倦淀,我還喜歡利用導(dǎo)航屬性的操作蒋畜,比如:
1、Song撞叽、Tag 多對(duì)多場(chǎng)景姻成,添加/更新 Song 時(shí)可以把 Tag 一起保存;
2愿棋、列表頁科展,希望外鍵、多對(duì)多出現(xiàn)在過濾篩選條件糠雨;
3才睹、列表頁,希望枚舉出現(xiàn)在過濾篩選條件甘邀;
4琅攘、刪除時(shí),級(jí)聯(lián)刪除所有相關(guān)數(shù)據(jù)松邪;
等等諸如此類的繁瑣操作坞琴,之所以說繁瑣,是因?yàn)檫@些工作技術(shù)不難逗抑,屬于嚴(yán)重的重復(fù)勞動(dòng)剧辐。
在人員配備苛刻的環(huán)境下寒亥,選擇盡量靠工具提高生產(chǎn)效率,這樣我們才有更多的時(shí)間在上班摸魚荧关。护盈。。
演示功能
- Domain 目錄下的文件是【實(shí)體類】
- Program.cs 是 asp.net core 啟動(dòng)代碼
using FreeSql;
using ojbk.Entities;
var fsql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=test.db;Pooling=true;Max Pool Size=10")
.UseAutoSyncStructure(true)
.UseNoneCommandParameter(true)
.UseMonitorCommand(cmd => Console.WriteLine(cmd.CommandText + "\r\n"))
.Build();
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
builder.Services.AddSingleton(fsql);
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseAuthorization();
app.MapControllers();
app.UseDefaultFiles();
app.UseStaticFiles();
/******************************* 以下是核心代碼 **************************/
app.UseFreeAdminLtePreview("/",
typeof(Config),
typeof(Role),
typeof(Menu),
typeof(User),
typeof(Department),
typeof(Employee),
typeof(Position),
typeof(AppLog),
typeof(LoginLog),
typeof(OprationLog),
typeof(IdleScheduler.TaskInfo),
typeof(IdleScheduler.TaskLog)
);
app.Run();
既然 ORM 已經(jīng)對(duì)實(shí)體進(jìn)行了配置羞酗,利用已存在的條件便利的產(chǎn)生后臺(tái)管理功能,真是一大快事N煞檀轨!
它是 FreeSql 衍生出來的 .NETCore MVC 中間件擴(kuò)展包 FreeSql.AdminLTE.dll,基于 AdminLTE 前端框架動(dòng)態(tài)產(chǎn)生實(shí)體的增刪查改界面欺嗤;
輸入:實(shí)體1参萄、實(shí)體2、實(shí)體3
輸出:后臺(tái)管理的功能
只需要傳入實(shí)體煎饼,就可以生產(chǎn) curd 的管理功能讹挎,是不是有些騷啊~~~
先發(fā)幾張運(yùn)行后的圖片嘗個(gè)鮮:
這是根據(jù)實(shí)體產(chǎn)生 curd 界面的 mvc 中間件,開發(fā)時(shí)預(yù)覽或簡(jiǎn)單管理數(shù)據(jù)好方便啊吆玖⊥怖#看完預(yù)覽圖不由得再感嘆一次 FreeSql 的易用性,那句口號(hào):做 .NETCore 最方便的 ORM沾乘! 沒有說錯(cuò)怜奖。。翅阵。作者多次提及:“我們是簡(jiǎn)約風(fēng)格歪玲,沒那么復(fù)雜的用法”,也驗(yàn)證了這一點(diǎn)掷匠。滥崩。
機(jī)制設(shè)定
1、添加讹语、修改數(shù)據(jù)
中件間產(chǎn)生的界面包括添加钙皮、修改數(shù)據(jù)的功能,普通實(shí)體的根據(jù)屬性的類型與 Html5 UI 一一映射募强;
比較特殊的映射規(guī)則:
c# 類型 | Html5 |
---|---|
布爾 | 復(fù)選框 |
枚舉 | 下拉選擇 |
日期 | 日期控件 |
ManyToOne 導(dǎo)航屬性 | 下拉選擇 |
ManyToMany 導(dǎo)航屬性 | 多選器 |
等等株灸。。擎值。
什么情況會(huì)產(chǎn)生【上傳文件】控件慌烧?
有興趣的可以了解源碼,目前沒有開放在外部配置鸠儿。
2屹蚊、列表查詢厕氨、過濾篩選
中件間為每個(gè)實(shí)體提供了分頁列表查詢,每頁為20條數(shù)據(jù)汹粤;
除此外命斧,還提供了過濾條件的支持,規(guī)則是根據(jù)導(dǎo)航屬性(ManyToOne嘱兼、ManyToMany)国葬。比如【崗位】,內(nèi)含有【部門 Department】芹壕、【員工 Employee】汇四、【角色 Role】,則【崗位】列表頁會(huì)出現(xiàn)按【分類】篩選的UI踢涌,詳見上面的 demo 示意圖通孽,或者下載 demo 運(yùn)行;
3睁壁、刪除數(shù)據(jù)
中件間為每個(gè)實(shí)體提供了批量刪除的功能背苦;
并且支持了復(fù)雜導(dǎo)航屬性關(guān)系的級(jí)聯(lián)刪除功能,而這個(gè)功能不依賴數(shù)據(jù)庫外鍵潘明;
下載 Demo
我們一直習(xí)慣用 sqlite 做測(cè)試庫行剂,測(cè)試完畢直接刪除目錄,不留垃圾數(shù)據(jù)钉疫,所以下面的 demo 不需要修改任何地方硼讽,運(yùn)行時(shí)自動(dòng)建庫、建表牲阁;
運(yùn)行環(huán)境:.net6.0
https://files.cnblogs.com/files/FreeSql/freesql.adminlte.preview.zip
第一步:
dotnet restore
第二步:
dotnet run
將監(jiān)聽的地址復(fù)制固阁,打開 chrome 瀏覽器粘貼訪問。
思考人生
一番驚喜過后城菊,你應(yīng)該會(huì)考慮實(shí)用性备燃,這樣做有什么價(jià)值,可用于什么樣的場(chǎng)景凌唬?
這個(gè)擴(kuò)展包簡(jiǎn)單的輸入并齐,產(chǎn)生巨量的功能反饋。但由于生成的代碼是 mvc + razor + jquery + AdminLTE客税,決定它很難在這個(gè)時(shí)代開花結(jié)果况褪。
思路方向應(yīng)該不會(huì)有問題,因?yàn)檎娴奶奖懔烁埽绻珊蟮拇a是 Service + Vue + ElementUI测垛,并且還提供了默認(rèn)通用權(quán)限、定時(shí)任務(wù)等功能秧均,就問香不香食侮?
期待有興趣志同道合的人改造号涯。
若有使用疑問請(qǐng)留言,謝謝锯七!
QQ群:4336577(已滿)链快、8578575(在線)、52508226(在線)
github:https://github.com/2881099