教程目錄html
從零開始啓動Osharp前端
1.1. 使用OsharpNS項目模板建立項目git
1.2. 配置數據庫鏈接串並啓動項目github
1.3. OsharpNS.Swagger使用實例(登陸和受權)數據庫
1.4. Angular6的前端項目啓動框架
Osharp代碼生成器的使用工具
2.1 生成器的使用學習
2.2 生成代碼詳解(如何本身實現業務功能)ui
Osharp部分模塊使用.net
3.1 Osharp.Redis使用
Osharp深度學習和使用
4.2 多上下文配置(多個數據庫的使用)
4.3. 自定義模塊的定義(Senparc.Weixin的使用)
4.4. 繼續學習中....
OsharpNS官方資源
項目地址:https://github.com/i66soft/osharp-ns20
演示地址:https://www.osharp.org 直接使用QQ登陸能夠查看效果
文檔地址:https://docs.osharp.org 正在完善中....
發佈博客:https://www.cnblogs.com/guomingfeng/p/osharpns-publish.html 大神看這個文檔應該就能跑起來,從零開始啓動Osharp基於此文檔完成
VS生成器插件:https://marketplace.visualstudio.com/items?itemName=LiuliuSoft.osharp
官方交流QQ羣:85895249
目錄
生成器在線下載地址:https://marketplace.visualstudio.com/items?itemName=LiuliuSoft.osharp
也能夠經過VS2017菜單欄工具-擴展和更新
,檢索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都已經生成,並能正常使用