OsharpNS輕量級.net core快速開發框架簡明入門教程
教程目錄
-
從零開始啟動Osharp
1.1. 使用OsharpNS項目模板創建項目
1.2. 配置數據庫連接串並啟動項目
1.3. OsharpNS.Swagger使用實例(登錄和授權)
1.4. Angular6的前端項目啟動
-
Osharp代碼生成器的使用
2.1 生成器的使用
-
Osharp部分模塊使用
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
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都已經生成,並能正常使用

