OsharpNS輕量級.net core快速開發框架簡明入門教程-代碼生成器的使用

OsharpNS輕量級.net core快速開發框架簡明入門教程

教程目錄

  1. 從零開始啟動Osharp

    1.1. 使用OsharpNS項目模板創建項目

    1.2. 配置數據庫連接串并啟動項目

    1.3. OsharpNS.Swagger使用實例(登錄和授權)

    1.4. Angular6的前端項目啟動

  2. Osharp代碼生成器的使用

    2.1 生成器的使用

    2.2 生成代碼詳解(如何自己實現業務功能)

  3. Osharp部分模塊使用

    3.1 Osharp.Redis使用

    3.2 Osharp.Hangfire使用

    3.3 Osharp.Permissions使用

  4. Osharp深度學習和使用

    4.1 切換數據庫(從SqlServer改為MySql)

    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代碼生成器的使用

目錄

  1. 下載并安裝生成器插件

  2. 配置項目字段信息

  3. 多對一關系的配置

  4. 代碼生成并查看效果

  5. 示例代碼配置文件下載

下載并安裝生成器插件

  1. 生成器在線下載地址:https://marketplace.visualstudio.com/items?itemName=LiuliuSoft.osharp

  2. 也可以通過VS2017菜單欄工具-擴展和更新,檢索Osharp進行插件的安裝

1508472-20190427111546692-964213239.png

1508472-20190427111553428-978410257.png

配置項目字段信息

  1. 通過菜單運行Osharp代碼生成器,啟動之后直接全屏

1508472-20190427111605448-1416494758.png

  1. 生成器使用流程

    1508472-20190427133311880-998921533.png

    從生成器界面上可以看到,生成器包括項目信息項目模塊列表模塊實體列表外鍵配置實體屬性列表

    配置流程:

    1. 配置項目信息:對項目整體信息進行配置

      特別注意:在配置項目信息時,注意對命名空間前綴的配置,以下圖解決方案為例,命名空間前綴就應該填寫CanDoo.Test,否則生成的時候會提示識別Osharp項目失敗,影響生成

      1508472-20190427111612526-580937234.png

    2. 配置項目模塊:一個系統往往有多個模塊組成,本示例中配置兩個模塊

      代碼名稱:生成后對應模塊的命名空間和文件夾

      顯示名稱:模塊的中文含義,會體現在功能模塊的名字上

    3. 配置模塊實體:通過點擊對應的項目模塊進入模塊的實體配置

      代碼名稱:實體名稱

      顯示名稱:實體的中文名字

      主鍵類型:表的主鍵類型,一般是int吧,根據實際選擇

      增:控制此實體是否生成新增的API,接口,實現

      改:控制此實體是否生成編輯的API,接口,實現

      刪:控制此實體是否生成刪除的API,接口,實現

      數據權限:沒折騰,不知道怎么用

      鎖定:生成IsLocked字段,具體的實現得自己實現

      軟刪除:生成DeletedTime字段,用于標識刪除時間

      創建時間:生成創建時間

      創建審計:生成創建時間,創建人Id字段 (包含前面的創建時間)

      更新審計:生成更新時間,更新人Id字段

      外鍵 按鈕:點擊進入外鍵配置

    4. 配置實體屬性:

      代碼名稱:實體的屬性

      顯示名稱:實體的注釋

      屬性類型全名:實體的數據類型,特別注意:如果是實體集合,直接使用ICollection<>即可,如果是關聯特定實體,比如關聯User,需要填寫User

      只讀:這個應該是生成界面時使用的屬性

      排序:這個應該是生成界面時使用的屬性

      編輯:這個應該是生成界面時使用的屬性

      過濾:這個應該是生成界面時使用的屬性

      必填:生成實體的時候會增加[IsRequired]屬性

      最小長度:這個應該是生成界面時使用的屬性

      最大長度:這個應該是生成界面時使用的屬性

      最小值:這個應該是生成界面時使用的屬性

      最大值:這個應該是生成界面時使用的屬性

      可空類型:對應int?,勾選了,數據類型會加"?"

      外鍵:勾選了,說明當前屬性是某個實體的外鍵

      導航:勾選了,說明當前屬性是某個實體的導航屬性

      關聯實體:選擇當前字段關聯的實體,同一套“外鍵+導航”要選擇相同的關聯實體

      輸入DTO:勾選了,此屬性會在實體的InputDto中生成對應屬性

      輸出DTO:勾選了,此屬性會在實體的OutputDto中生成對應屬性

      默認值:控制默認值

    5. 配置外鍵:

      己方導航屬性:配置實體屬性時,勾選了導航的屬性會在這里顯示供選擇

      己方外鍵屬性:配置實體屬性時,勾選了外鍵的屬性會在這里顯示供選擇

      對方實體: 根據實際選擇就行

      對方導航屬性:這里的具體設置看實例吧

      外鍵關系:有一對多 多對一等選項 一般就用多對一和一對一就行,在外鍵配置部分詳細說明

      必須:是否必須的

      刪除行為:有多個選項,根據實際選擇,建議使用Restrict

    6. 保存配置:配置過程中,順手就去點一下,免得插件崩潰導致你奔潰

    7. 生成代碼:所有配置完成后,點一下保存配置,然后再生成代碼

多對一關系的配置

在本教程中,我們使用文章分類~文章~作者這3者來說明多對一關系的配置

從文章的角度出發,文章和文章分類是多對一,文章和用戶也是多對一,文章分類和文章是雙方都有對方的導航,文章和用戶的導航只存在于文章中

文章分類:包含文章集合的導航

文章:包含文章分類和用戶的導航

用戶:不包含文章的導航

  1. 配置文章分類實體屬性

    配置Articles屬性,屬性類型全名為ICollection<>,因為這個是導航屬性,所以勾選導航,關聯實體中配置為關聯的實體CanDoo.Test.CMS.Entities.Article

    1508472-20190427133323964-1639543264.png

  2. 配置文章實體屬性

    配置文章分類關聯:

    配置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

    1508472-20190427133311880-998921533.png

  3. 配置外鍵

    配置文章和文章分類的外鍵:己方導航屬性AritcleCategory,己方外鍵屬性AritcleCategoryId,對方實體CanDoo.Test.CMS.Entities.ArticleCategory,對方導航屬性Articles,外鍵關系ManyToOne,必須就根據實際需要填寫了,刪除關系選擇Restrict,配置此屬性,分類下如果存在文章,刪除時會因為關聯禁止刪除

    配置文章和用戶的外鍵:己方導航屬性User,己方外鍵屬性UserId,對方實體CanDoo.Test.Identity.Entities.User,對方導航屬性不要填寫,這里能和填寫的做一下對比,外鍵關系ManyToOne,必須就根據實際需要填寫了,刪除關系選擇Restrict,配置此屬性,分類下如果存在文章,刪除時會因為關聯禁止刪除

    1508472-20190427133317488-518563324.png

代碼生成并查看效果

  1. 當配置完成之后,點一下“保存配置”

  2. 點一下“生成代碼”按鈕,系統會詢問是否為Osharp解決方案,點"是"就行了

    1508472-20190427111643746-1806554375.png

  3. 代碼生成之后,已經將代碼添加到項目中,可以執行編譯,如果有錯,主要就是配置問題或者是有些類庫沒有引用,我在生成之后發現User實體對應的類庫沒有引用,引用之后能正常編譯(當然前端中也有代碼生成,因為我不用這個前端,所以就沒仔細去研究了)

    1508472-20190427141210894-618526577.png

    1508472-20190427141220608-1938717682.png

  4. 程序包管理控制臺中運行add-migration -Context DefaultDbcontext initCMS,生成數據庫遷移代碼(如果沒有多上下文,執行add-migration initCMS即可)

  5. 程序包管理控制臺中運行update-database -Context DefaultDbcontext,執行數據庫遷移(如果沒有多上下文,執行update-database即可)

    1508472-20190427111702184-891758670.png

  6. 運行項目,查看Swagger,會發現對應的5張表所有的增刪改查API都已經生成,并能正常使用

    1508472-20190427141513971-1295310799.png

轉載于:https://www.cnblogs.com/candoo/p/10778631.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386943.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386943.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386943.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RUNOOB python練習題 14

用來練手的python 練習題其十四&#xff0c;原鏈接 : python練習實例14 題干 : 將一個正整數分解質因數。例如&#xff1a;輸入90,打印出90233*5。 拿到題目&#xff0c;我們就可以看出&#xff0c;首先我們需要一個函數來判斷某一正整數是否為質數&#xff0c;然后還需要一個…

關于作者

北京某公司滲透工程師 Web滲透、PHP/Java代碼審計、安全研究 想換一份工作&#xff0c;求推薦。轉載于:https://www.cnblogs.com/dgjnszf/p/10779097.html

centos7通過yum安裝JDK1.8

安裝之前先檢查一下系統有沒有自帶open-jdk 命令&#xff1a; rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果沒有輸入信息表示沒有安裝。 如果安裝可以使用rpm -qa | grep java | xargs rpm -e --nodeps 批量卸載所有帶有Java的文件 這句命令的關鍵字是j…

一個電腦的重裝到java開發環境安裝配置的全過程

剛拿到一臺別人用過的電腦。看著c盤爆滿&#xff0c;而且用了還是windows7操作系統&#xff0c;強迫癥發作馬上就準備重裝系統。 之前換固態使用wepe制作U盤啟動盤裝系統的步驟和過程全部忘記的&#xff0c;賊尷尬。 同事都看不過眼了 使用UltraISO這個軟件幫我做了U盤啟動盤 …

RUNOOB python練習題17

用來練手的python 練習題其十三&#xff0c;原鏈接 : python練習實例17 題干 : 輸入一行字符&#xff0c;分別統計出其中英文字母、空格、數字和其它字符的個數 這個例題讓我回憶起了遠古的記憶&#xff0c;python str類的 isalpha,isspace,isdigit方法。這些方法通過比較ASC…

Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平臺

Centos7下使用ELK&#xff08;Elasticsearch Logstash Kibana&#xff09;搭建日志集中分析平臺 日志監控和分析在保障業務穩定運行時&#xff0c;起到了很重要的作用&#xff0c;不過一般情況下日志都分散在各個生產服務器&#xff0c;且開發人員無法登陸生產服務器&#xf…

疊數的加法與字符串 RUNOOB python練習題 18

用來練手的python 練習題其十八&#xff0c;原鏈接 : python練習實例18 題干: 求saaaaaaaaaaaa…a的值&#xff0c;其中a是一個數字。例如222222222222222(此時共有5個數相加)&#xff0c;幾個數相加由鍵盤控制 這種類型的疊數相加&#xff0c;讓我不禁聯想到了python中&…

wget在linux中安裝出現錯誤解決辦法

在使用wget命令報錯 certificate common name xxx doesnt match requestde host name&#xff0c;我們一般的解決辦法是查找下載地址&#xff0c;但是有時候更換地址也會發生錯誤&#xff0c; wget http://www.monkey.org/~provos/libevent-1.2.tar.gz 報如下錯&#xff1a; er…

linux下elasticsearch的安裝

首先安裝jdk 下載elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz 解壓 tar -zxvf elasticsearch-6.2.4.tar.gz 移動項目到/usr目錄下 mv elasticsearch-6.2.4 /usr 啟動es /usr/elasticsearch-6.4.2/bin/elastic…

RUNOOB python練習題19 找出1000以內的所有完數

用來練手的python 練習題&#xff0c;原鏈接 : python練習實例19 題干: 一個數如果恰好等于它的因子之和&#xff0c;這個數就稱為"完數"。例如61&#xff0b;2&#xff0b;3.編程找出1000以內的所有完數。 首先我們要理解&#xff0c;什么是完數。根據百度詞條&am…

金蝶學習網站

https //vip.kingdee.com/轉載于:https://www.cnblogs.com/RogerLu/p/10784498.html

Kibana linux下安裝

1、kibana簡介 Kibana是一個開源的分析與可視化平臺&#xff0c;設計出來用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的數據&#xff0c;使用各種不同的圖表、表格、地圖等kibana能夠很輕易地展示高級數據分析與可視化。 Kiban…

RUNOOB python練習題 23 使用*號輸出菱形

用來練手的python練習題&#xff0c;原題鏈接:python練習實例23 題干: 這個題目還是利用python字符串的乘法等性質&#xff0c;通過循環打印出我們想要的圖形。 源代碼如下: for i in range(4):character " " * (3-i) "*" * ((i1)*2-1)print(charact…

nohup /dev/null 21 含義詳解

nohup命令&#xff1a;如果你正在運行一個進程&#xff0c;而且你覺得在退出帳戶時該進程還不會結束&#xff0c;那么可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之后繼續運行相應的進程。nohup就是不掛起的意思( n ohang up)。 該命令的一般形式為&#xff1a;nohup…

RUNOOB python練習題24 斐波那契數列的衍生問題

用來練手的python練習題&#xff0c;原題鏈接 : python練習實例24 題干: 有一分數序列&#xff1a;2/1&#xff0c;3/2&#xff0c;5/3&#xff0c;8/5&#xff0c;13/8&#xff0c;21/13…求出這個數列的前20項之和。 拿到題目觀察數列&#xff0c;我們不難發現&#xff0c;…

企業郵箱服務器如何設置?

企業郵箱是郵箱服務商面向企業客戶開發的郵箱系統&#xff0c;采取管理員機制&#xff0c;企業使用自己的官網域名作為郵箱地址的后綴&#xff0c;由管理員為員工創建郵箱空間&#xff0c;并分配權限。在員工辦公的場景中&#xff0c;為了收發郵件方便&#xff0c;一般的都會使…

elasticsearch6.2.4 與logstash與kibana版本6.2.4搭建同步使用

解壓 tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz 創建快捷方式 ln -s kibana-6.2.4-linux-x86_64 kibana /app/elasticsearch/kibana/bin #端口 server.port: 5601 #主機 server.host: "10.118.182.85" #es的地址 elasticsearch.url: http://10.118.182…

RUNOOB python練習題25 遞歸實現階乘

用來練手的python練習題&#xff0c;原題鏈接: python練習實例25 題干 : 求12!3!…20!的和。 題干要求我們實現一個階乘的求和&#xff0c;顯而易見的&#xff0c;我們可以使用遞歸來實現階乘&#xff0c;再使用循環語句對這些階乘就行求和。源代碼如下: # 求階乘 def facto…

淺析JavaScript解析賦值、淺拷貝和深拷貝的區別

文章首發于sau交流學習社區 一、賦值&#xff08;Copy&#xff09; 賦值是將某一數值或對象賦給某個變量的過程&#xff0c;分為&#xff1a; 1、基本數據類型&#xff1a;賦值&#xff0c;賦值之后兩個變量互不影響 2、引用數據類型&#xff1a;賦**址**&#xff0c;兩個變量具…

RUNOOB python練習題27 遞歸逆向輸出字符串

用來練手的python練習題&#xff0c;原題鏈接: python練習實例27 題干: 利用遞歸函數調用方式&#xff0c;將所輸入的5個字符&#xff0c;以相反順序打印出來。 實際要實現這個功能很簡單&#xff0c;我們只需要反向遍歷字符串即可。源代碼如下: def p_inverse_boucle(my_st…