asp.net?core實(shí)體類生產(chǎn)CRUD后臺(tái)管理界面
前言介紹
喜歡小規(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、列表頁(yè),希望外鍵、多對(duì)多出現(xiàn)在過(guò)濾篩選條件;
3、列表頁(yè),希望枚舉出現(xiàn)在過(guò)濾篩選條件;
4、刪除時(shí),級(jí)聯(lián)刪除所有相關(guān)數(shù)據(jù);
等等諸如此類的繁瑣操作,之所以說(shuō)繁瑣,是因?yàn)檫@些工作技術(shù)不難,屬于嚴(yán)重的重復(fù)勞動(dòng)。
在人員配備苛刻的環(huán)境下,選擇盡量靠工具提高生產(chǎn)效率,這樣我們才有更多的時(shí)間在上班摸魚(yú)。。。
演示功能
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)管理功能,真是一大快事??!
它是 FreeSql 衍生出來(lái)的 .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 中間件,開(kāi)發(fā)時(shí)預(yù)覽或簡(jiǎn)單管理數(shù)據(jù)好方便啊??赐觐A(yù)覽圖不由得再感嘆一次 FreeSql 的易用性,那句口號(hào):做 .NETCore 最方便的 ORM! 沒(méi)有說(shuō)錯(cuò)。。。作者多次提及:“我們是簡(jiǎn)約風(fēng)格,沒(méi)那么復(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)生【上傳文件】控件?
有興趣的可以了解源碼,目前沒(méi)有開(kāi)放在外部配置。
2、列表查詢、過(guò)濾篩選
中件間為每個(gè)實(shí)體提供了分頁(yè)列表查詢,每頁(yè)為20條數(shù)據(jù);
除此外,還提供了過(guò)濾條件的支持,規(guī)則是根據(jù)導(dǎo)航屬性(ManyToOne、ManyToMany)。比如【崗位】,內(nèi)含有【部門(mén) Department】、【員工 Employee】、【角色 Role】,則【崗位】列表頁(yè)會(huì)出現(xiàn)按【分類】篩選的UI,詳見(jiàn)上面的 demo 示意圖,或者下載 demo 運(yùn)行;
3、刪除數(shù)據(jù)
中件間為每個(gè)實(shí)體提供了批量刪除的功能;
并且支持了復(fù)雜導(dǎo)航屬性關(guān)系的級(jí)聯(lián)刪除功能,而這個(gè)功能不依賴數(shù)據(jù)庫(kù)外鍵;
下載 Demo
我們一直習(xí)慣用 sqlite 做測(cè)試庫(kù),測(cè)試完畢直接刪除目錄,不留垃圾數(shù)據(jù),所以下面的 demo 不需要修改任何地方,運(yùn)行時(shí)自動(dòng)建庫(kù)、建表;
運(yùn)行環(huán)境:.net6.0
第一步:
dotnet restore
第二步:
dotnet run
將監(jiān)聽(tīng)的地址復(fù)制,打開(kāi) chrome 瀏覽器粘貼訪問(wèn)。
思考人生
一番驚喜過(guò)后,你應(yīng)該會(huì)考慮實(shí)用性,這樣做有什么價(jià)值,可用于什么樣的場(chǎng)景?
這個(gè)擴(kuò)展包簡(jiǎn)單的輸入,產(chǎn)生巨量的功能反饋。但由于生成的代碼是 mvc + razor + jquery + AdminLTE,決定它很難在這個(gè)時(shí)代開(kāi)花結(jié)果。
思路方向應(yīng)該不會(huì)有問(wèn)題,因?yàn)檎娴奶奖懔?,如果生成后的代碼是 Service + Vue + ElementUI,并且還提供了默認(rèn)通用權(quán)限、定時(shí)任務(wù)等功能,就問(wèn)香不香?
期待有興趣志同道合的人改造。
github:
https://github.com/2881099/FreeSql.AdminLTE
以上就是asp.net core實(shí)體類生產(chǎn)CRUD后臺(tái)管理界面的詳細(xì)內(nèi)容,更多關(guān)于asp.net core實(shí)體類生產(chǎn)CRUD的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
ASP.NET Core+Docker+Jenkins實(shí)現(xiàn)持續(xù)集成的完整實(shí)例
這篇文章主要給大家介紹了關(guān)于ASP.NET Core+Docker+Jenkins實(shí)現(xiàn)持續(xù)集成的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05ASP.NET?Core框架探索之Authentication的權(quán)限認(rèn)證過(guò)程解析
這篇文章主要介紹了ASP.NET?Core框架探索之Authentication的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03asp.net AjaxControlToolKit--TabContainer控件的介紹
ModalPopup控件允許一個(gè)asp頁(yè)面的部分內(nèi)容以對(duì)話框的模式顯示給用戶,同時(shí)會(huì)限制用戶于頁(yè)面的其他部分交互。對(duì)話框顯示的內(nèi)容可以是一個(gè)層級(jí),這個(gè)層級(jí)的背景可以使用戶自定義的格式,簡(jiǎn)單的理解好比是一個(gè)對(duì)話框彈出來(lái)后,主頁(yè)面會(huì)顯示灰色,且不可操作。2009-06-06ASP.NET Core 集成 React SPA應(yīng)用的步驟
這篇文章主要介紹了ASP.NET Core 集成 React SPA應(yīng)用的步驟,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04Web系統(tǒng)通過(guò)EXE文件實(shí)現(xiàn)讀取客戶電腦MAC等硬件信息且兼容非IE瀏覽器
我們?cè)趯?shí)際Web應(yīng)用中,可能會(huì)遇到“需要限定特定的電腦或用戶才能使用系統(tǒng)”的問(wèn)題。2014-08-08基于.NET BitmapImage 內(nèi)存釋放問(wèn)題的解決方法詳解
本篇文章是對(duì).NET BitmapImage 內(nèi)存釋放問(wèn)題的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05在ASP.NET Core中應(yīng)用HttpClient獲取數(shù)據(jù)和內(nèi)容
這篇文章主要介紹了在ASP.NET Core中集成和使用HttpClient獲取數(shù)據(jù)和內(nèi)容,幫助大家更好的理解和學(xué)習(xí)使用ASP.NET Core,感興趣的朋友可以了解下2021-03-03