==== 目錄 ====
跟我學: 使用 fireasy 搭建 asp.net core 項目系列之一 —— 開篇
跟我學: 使用 fireasy 搭建 asp.net core 項目系列之二 —— 准備
跟我學: 使用 fireasy 搭建 asp.net core 項目系列之三 —— 配置
上篇對 fireasy 大致作了介紹,接下來的幾天里,fireasy 將帶領大家一起通過實例來學習如何搭建一個小型的項目,以及實現一些系統管理的功能,在此過程中,會對所使用的技術作一些剖析和分享,希望大家能夠喜歡。
一、設計項目結構
這里主要講解的是 fireasy 的使用方法,因此對於項目的分層,沒有那么多講究,因此使用了精簡至上的原則,采用最簡單的方案,數據服務層即業務層。
項目名稱 | 角色和用途 |
Fireasy.Zero.Web | asp.net core web 項目 |
Firesay.Zero.Models | 數據實體模型,定義ORM的實體類型 |
Fireasy.Zero.Services | 數據服務層,提供數據交互 |
Fireasy.Zero.Infrastructure | 基礎設施層 |
Fireasy.Zero.Helpers | 輔助類庫 |
二、創建項目
按照上表中給定的項目,在解決方案里添加各項目,這里除 Fireasy.Zero.Web 之外的項目其他,可以建成 .net standard,也可以建成 .net core,建成 ..net standard 的好處是,不僅僅 .net core 可以用,也可以使 .net framework 4.5 及以下的框架所使用,所以,如果你還有 asp.net mvc 5 的項目,可以考慮建成 .net standard 類庫。
按照下圖為項目添加 nuget package,同時建立項目之間的引用關系。注,.net core 項目有個好處,互有依賴的包可以只需添加最末的那個,它們之間就會建立依賴關系了,比如 Web 需要添加 Fireasy.Web.Mvc 和 Fireasy.Web.EasyUI 兩個包,但是由於 Fireasy.Web.EasyUI 依賴於 Fireasy.Web.Mvc 因此,只需添加后者即可。再比如 Services,它是需要引用 Fireasy.Data.Entity 的,但是它所引用的 Models 已經安裝了 Fireasy.Data.Entity 包,因此,它就不需要再安裝包了。
三、數據庫設計
一個系統的權限管理后台是必不可少的,因此我就拿這個例子來說說,后台權限管理功能包括模塊(菜單)管理、機構管理、用戶管理、角色管理、權限管理等等。數據表的設計圖如下:
各表的含義如下:
表名稱 | 含義 |
sys_org | 機構表 |
sys_user | 用戶表 |
sys_module | 模塊(菜單)表 |
sys_operate | 操作(工具欄菜單)表 |
sys_role | 角色表 |
sys_module_permission | 模塊權限表,即角色具有的模塊權限 |
sys_operate_permission | 操作權限表,即角色具有的操作權限 |
sys_org_permission | 數據權限表,即角色具有哪些機構的數據查看權限 |
sys_user_role | 用戶角色對應表,即用戶擁有哪些角色 |
sys_dict_type | 字典類別表 |
sys_dict_item | 字典項表 |
sys_log | 日志表 |
四、生成代碼
設計好數據庫后,使用代碼生成工具生成實體類的代碼(這些先說說 DBFirst 模式,后面會介紹 CodeFirlst 模式),這里推薦使用 CodeBuilder 來生成,它可以生成實體類,以及 DbContext ,甚至是 mvc 的 View 和 Controller。
CodeBuilder 的下載地址為 http://www.fireasy.cn/soft/codebuilder/CodeBuilder2setup.exe。
打開 CodeBuilder,配置一個數據源(你的數據源可以是 SqlServer、MySql,也可以是 PowerDesign 的設計文檔),然后連接數據源選擇要生成的表。在生成代碼之前,要設置以下幾個參數:
NameMode 是命名規則,一般是使用 Pascal,剛剛數據模型你也看到了,所有表和字段的名稱都是小寫加下划線的,我希望生成的代碼還是遵循 Pascal 命名規范,因此只需要將這個 NameMode 設為 Pascal 就行了,如果要沿用原來的命名,則改為 Inherit。
Namespace 是項目的命名空間,是前面一級的,這里設置為 Fireasy.Zero,它會以此為前綴,生成 Models 項目中實體類文件。
ProjectName 和 Author 是在備注中生成項目的名稱以及作者。
TableRegex 是對表名的正則替換,如果表名稱中有前綴,如 TB_ ,我們可以把這些前綴去掉,比如現在,所有表都是以 sys 開頭,那么我們可以設 TableRegex 為 sys_ 。
接下來,從模板里選擇 T4 Template 中的 Fireasy for C# 模板,最后點生成即可。
這個模板會生成 Models 下的所有實體類文件,以及 DbContext,還有 MVC 下的 View 和 Controller,當然后兩者只提供一個參考,具體的業務代碼還是自己動手去實現。你可以自己去寫 T4 模板來滿足你的生成需要。
生成的文件如下:
將生成的 Models 里的所有文件拷貝到 Fireasy.Zero.Models 項目下,將生成的 Data 目錄下的 DbContext 拷貝到 Fireasy.Zero.Services 項目下。MVC 的 View 和 Controller 就不使用了,僅作參考。
好了,准備工作都完成了,接下來就要開始一步一步地來實現業務功能。敬請期待下一篇。
==================================相關資源==================================
fireasy源碼: https://github.com/faib920/fireasy2,
zero源碼: https://github.com/faib920/zero
代碼生成器: http://www.fireasy.cn/soft/codebuilder/CodeBuilder2setup.exe