OsharpNS輕量級.net core快速開發框架簡明入門教程-代碼生成器的使用
OsharpNS輕量級.net core快速開發框架簡明入門教程
教程目錄
從零開始啟動Osharp
1.1. 使用OsharpNS項目模板創建項目
1.2. 配置數據庫連接串並啟動項目
1.3. OsharpNS.Swagger使用實例(登錄和授權)
1.4. Angular6的前端項目啟動
Osharp代碼生成器的使用
2.1 生成器的使用
2.2 生成代碼詳解(如何自己實現業務功能)
Osharp部分模塊使用
3.1 Osharp.Redis使用
3.2 Osharp.Hangfire使用
3.3 Osharp.Permissions使用
Osharp深度學習和使用
4.1 切換數據庫(從SqlServer改為MySql)
4.2 多上下文配置(多個數據庫的使用)
4.3. 自定義模塊的定義(Senparc.Weixin的使用)
4.4. 繼續學習中....
Osharp代碼生成器的使用
目錄
下載並安裝生成器插件
配置項目字段信息
多對一關系的配置
代碼生成並查看效果
示例代碼配置文件下載
下載並安裝生成器插件
生成器在線下載地址:https://marketplace.visualstudio.com/items?itemName=LiuliuSoft.osharp
也可以通過VS2017菜單欄
工具-擴展和更新
,檢索Osharp
進行插件的安裝
配置項目字段信息
- 通過菜單運行Osharp代碼生成器,啟動之後直接全屏
生成器使用流程
從生成器界面上可以看到,生成器包括
項目信息
、項目模塊列表
、模塊實體列表
、外鍵配置
、實體屬性列表
配置流程:
配置項目信息:對項目整體信息進行配置
特別註意:在配置項目信息時,註意對
命名空間前綴
的配置,以下圖解決方案為例,命名空間前綴就應該填寫CanDoo.Test
,否則生成的時候會提示識別Osharp項目失敗,影響生成配置項目模塊:一個系統往往有多個模塊組成,本示例中配置兩個模塊
代碼名稱:生成後對應模塊的命名空間和文件夾
顯示名稱:模塊的中文含義,會體現在功能模塊的名字上
配置模塊實體:通過點擊對應的項目模塊進入模塊的實體配置
代碼名稱:實體名稱
顯示名稱:實體的中文名字
主鍵類型:表的主鍵類型,一般是int吧,根據實際選擇
增:控制此實體是否生成新增的API,接口,實現
改:控制此實體是否生成編輯的API,接口,實現
刪:控制此實體是否生成刪除的API,接口,實現
數據權限:沒折騰,不知道怎麽用
鎖定:生成IsLocked字段,具體的實現得自己實現
軟刪除:生成DeletedTime字段,用於標識刪除時間
創建時間:生成創建時間
創建審計:生成創建時間,創建人Id字段 (包含前面的創建時間)
更新審計:生成更新時間,更新人Id字段
外鍵 按鈕:點擊進入外鍵配置
配置實體屬性:
代碼名稱:實體的屬性
顯示名稱:實體的註釋
屬性類型全名:實體的數據類型,特別註意:如果是實體集合,直接使用ICollection<>即可,如果是關聯特定實體,比如關聯User,需要填寫User
只讀:這個應該是生成界面時使用的屬性
排序:這個應該是生成界面時使用的屬性
編輯:這個應該是生成界面時使用的屬性
過濾:這個應該是生成界面時使用的屬性
必填:生成實體的時候會增加[IsRequired]屬性
最小長度:這個應該是生成界面時使用的屬性
最大長度:這個應該是生成界面時使用的屬性
最小值:這個應該是生成界面時使用的屬性
最大值:這個應該是生成界面時使用的屬性
可空類型:對應int?,勾選了,數據類型會加"?"
外鍵:勾選了,說明當前屬性是某個實體的外鍵
導航:勾選了,說明當前屬性是某個實體的導航屬性
關聯實體:選擇當前字段關聯的實體,同一套“外鍵+導航”要選擇相同的關聯實體
輸入DTO:勾選了,此屬性會在實體的InputDto中生成對應屬性
輸出DTO:勾選了,此屬性會在實體的OutputDto中生成對應屬性
默認值:控制默認值
配置外鍵:
己方導航屬性:配置實體屬性時,勾選了
導航
的屬性會在這裏顯示供選擇己方外鍵屬性:配置實體屬性時,勾選了
外鍵
的屬性會在這裏顯示供選擇對方實體: 根據實際選擇就行
對方導航屬性:這裏的具體設置看實例吧
外鍵關系:有一對多 多對一等選項 一般就用多對一和一對一就行,在外鍵配置部分詳細說明
必須:是否必須的
刪除行為:有多個選項,根據實際選擇,建議使用Restrict
保存配置:配置過程中,順手就去點一下,免得插件崩潰導致你奔潰
生成代碼:所有配置完成後,點一下保存配置,然後再生成代碼
多對一關系的配置
在本教程中,我們使用文章分類~文章~作者這3者來說明多對一關系的配置
從文章的角度出發,文章和文章分類是多對一,文章和用戶也是多對一,文章分類和文章是雙方都有對方的導航,文章和用戶的導航只存在於文章中
文章分類:包含文章集合的導航
文章:包含文章分類和用戶的導航
用戶:不包含文章的導航
配置文章分類實體屬性
配置
Articles
屬性,屬性類型全名為ICollection<>
,因為這個是導航屬性,所以勾選導航
,關聯實體中配置為關聯的實體CanDoo.Test.CMS.Entities.Article
配置文章實體屬性
配置文章分類關聯:
配置
ArticleCategoryId
屬性,屬性類型全名為System.Int32
,因為這個是外鍵,所以勾選外鍵
,關聯實體中配置為關聯的實體CanDoo.Test.CMS.Entities.ArticleCategory
;配置
ArticleCategory
屬性,屬性類型全名為ArticleCategory
,因為這個是導航屬性,所以勾選導航
,關聯實體中配置為關聯的實體CanDoo.Test.CMS.Entities.ArticleCategory
配置用戶關聯:
配置
UserId
屬性,屬性類型全名為System.Int32
,因為這個是外鍵,所以勾選外鍵
,關聯實體中配置為關聯的實體CanDoo.Test.Identity.Entities.User
;配置
User
屬性,屬性類型全名為User
,因為這個是導航屬性,所以勾選導航
,關聯實體中配置為關聯的實體CanDoo.Test.Identity.Entities.User
配置外鍵
配置文章和文章分類的外鍵:己方導航屬性
AritcleCategory
,己方外鍵屬性AritcleCategoryId
,對方實體CanDoo.Test.CMS.Entities.ArticleCategory
,對方導航屬性Articles
,外鍵關系ManyToOne
,必須就根據實際需要填寫了,刪除關系選擇Restrict
,配置此屬性,分類下如果存在文章,刪除時會因為關聯禁止刪除配置文章和用戶的外鍵:己方導航屬性
User
,己方外鍵屬性UserId
,對方實體CanDoo.Test.Identity.Entities.User
,對方導航屬性不要填寫,這裏能和填寫的做一下對比,外鍵關系ManyToOne
,必須就根據實際需要填寫了,刪除關系選擇Restrict
,配置此屬性,分類下如果存在文章,刪除時會因為關聯禁止刪除
代碼生成並查看效果
當配置完成之後,點一下“保存配置”
點一下“生成代碼”按鈕,系統會詢問是否為Osharp解決方案,點"是"就行了
代碼生成之後,已經將代碼添加到項目中,可以執行編譯,如果有錯,主要就是配置問題或者是有些類庫沒有引用,我在生成之後發現User實體對應的類庫沒有引用,引用之後能正常編譯(當然前端中也有代碼生成,因為我不用這個前端,所以就沒仔細去研究了)
在
程序包管理控制臺
中運行add-migration -Context DefaultDbcontext initCMS
,生成數據庫遷移代碼(如果沒有多上下文,執行add-migration initCMS
即可)在
程序包管理控制臺
中運行update-database -Context DefaultDbcontext
,執行數據庫遷移(如果沒有多上下文,執行update-database
即可)運行項目,查看Swagger,會發現對應的5張表所有的增刪改查API都已經生成,並能正常使用
OsharpNS輕量級.net core快速開發框架簡明入門教程-代碼生成器的使用