<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
喜歡小規模團隊的"單打獨鬥",有的時候即使在大公司,也經常做著3-5個人團隊的小專案,相信很多人有類似的經歷。
本文介紹如何將專案中已存在的【實體類】,直接生產出 CRUD 後臺管理介面。
對於通用後臺管理系統的生成,除了單純的對單表 crud 操作外,我還喜歡利用導航屬性的操作,比如:
1、Song、Tag 多對多場景,新增/更新 Song 時可以把 Tag 一起儲存;
2、列表頁,希望外來鍵、多對多出現在過濾篩選條件;
3、列表頁,希望列舉出現在過濾篩選條件;
4、刪除時,級聯刪除所有相關資料;
等等諸如此類的繁瑣操作,之所以說繁瑣,是因為這些工作技術不難,屬於嚴重的重複勞動。
在人員配備苛刻的環境下,選擇儘量靠工具提高生產效率,這樣我們才有更多的時間在上班摸魚。。。
Domain 目錄下的檔案是【實體類】
Program.cs 是 asp.net core 啟動程式碼
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 + "rn")) .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 已經對實體進行了設定,利用已存在的條件便利的產生後臺管理功能,真是一大快事!!
它是 FreeSql 衍生出來的 .NETCore MVC 中介軟體擴充套件包 FreeSql.AdminLTE.dll,基於 AdminLTE 前端框架動態產生實體的增刪查改介面;
輸入:實體1、實體2、實體3
輸出:後臺管理的功能
只需要傳入實體,就可以生產 curd 的管理功能,是不是有些騷啊~~~
先發幾張執行後的圖片嚐個鮮:
這是根據實體產生 curd 介面的 mvc 中介軟體,開發時預覽或簡單管理資料好方便啊。看完預覽圖不由得再感嘆一次 FreeSql 的易用性,那句口號:做 .NETCore 最方便的 ORM! 沒有說錯。。。作者多次提及:“我們是簡約風格,沒那麼複雜的用法”,也驗證了這一點。。
中件間產生的介面包括新增、修改資料的功能,普通實體的根據屬性的型別與 Html5 UI 一一對映;
比較特殊的對映規則:
c# 型別 | Html5 |
---|---|
布林 | 核取方塊 |
列舉 | 下拉選擇 |
日期 | 日期控制元件 |
ManyToOne 導航屬性 | 下拉選擇 |
ManyToMany 導航屬性 | 多選器 |
等等。。。
什麼情況會產生【上傳檔案】控制元件?
有興趣的可以瞭解原始碼,目前沒有開放在外部設定。
中件間為每個實體提供了分頁列表查詢,每頁為20條資料;
除此外,還提供了過濾條件的支援,規則是根據導航屬性(ManyToOne、ManyToMany)。比如【崗位】,內含有【部門 Department】、【員工 Employee】、【角色 Role】,則【崗位】列表頁會出現按【分類】篩選的UI,詳見上面的 demo 示意圖,或者下載 demo 執行;
中件間為每個實體提供了批次刪除的功能;
並且支援了複雜導航屬性關係的級聯刪除功能,而這個功能不依賴資料庫外來鍵;
下載 Demo
我們一直習慣用 sqlite 做測試庫,測試完畢直接刪除目錄,不留垃圾資料,所以下面的 demo 不需要修改任何地方,執行時自動建庫、建表;
執行環境:.net6.0
第一步:
dotnet restore
第二步:
dotnet run
將監聽的地址複製,開啟 chrome 瀏覽器貼上存取。
一番驚喜過後,你應該會考慮實用性,這樣做有什麼價值,可用於什麼樣的場景?
這個擴充套件包簡單的輸入,產生巨量的功能反饋。但由於生成的程式碼是 mvc + razor + jquery + AdminLTE,決定它很難在這個時代開花結果。
思路方向應該不會有問題,因為真的太方便了,如果生成後的程式碼是 Service + Vue + ElementUI,並且還提供了預設通用許可權、定時任務等功能,就問香不香?
期待有興趣志同道合的人改造。
github:
https://github.com/2881099/FreeSql.AdminLTE
以上就是asp.net core實體類生產CRUD後臺管理介面的詳細內容,更多關於asp.net core實體類生產CRUD的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45