[Abp vNext 入坑分享] – 3.簡單的用戶模塊功能開發
- 2020 年 4 月 24 日
- 筆記
- abpvnext, abpvnext學習, c#, netcore
一、簡要說明
本篇文章開始進行業務模塊的開發模擬,藉助user模塊來進行業務開發,主要是用戶相關的基礎操作。主要是先使用Users來體驗整個開發的流程。主要是先把一個基礎流程跑順利,在這裡我並不會過於追求讓所有屬性都只能通過方法進去賦值這種寫法,我覺得絕大部分項目並沒有必要寫到這樣。雖然藉助代碼生成器,這種方法也很簡單的生成出來。只是我覺得沒必要,只是個人喜好。。
二、具體步驟
2.1.首先創建相應的Entity,
並將Entity放入Dbcontext中綁定Dbset
2.2.初始化Migrations並更新到數據庫中去。
如上圖,則需要在Migration層安裝Microsoft.EntityFrameworkCore.Tools
再運行Update-database更新到數據庫。
這樣就相當於創建好了相應的表了。
2.3創建對應的AppService,IAppService,Repository,IRepository層。
2.4在相應的層添加好代碼:我這裡模擬了getuserinfo返回user_name,user_phone方法。一個是完全穿透到ef的repository層的,另一個是利用appservice層的repository的基礎方法GetAsyn的。
首先要創建好兩個dto,一個用於入參,一個用於出參。暫時我不使用automapper之類的組件進行自動轉換,後期會介紹automapper的用法。
然後在HttpApi項目創建UserController:LearnController,後期會在LearnController裏面封裝一些基礎方法,因為除了特殊的接口外,所有的接口盡量都要繼承LearnController,然後注入IUserAppServices
(1)穿透到EF的repository層的代碼如下,供給get接口使用: UserRepository
IUserRepository
UserAppServices
IUserAppServices
(2)利用Repository的Base方法如下,供給get1接口使用:
UserAppServices
IUserAppServices
2.5調試項目。
使用我們事先錄入的userid去調用get/get1接口,看到返回是預期的數據
然後我們看一下控制台輸出的日誌,查詢也是正常的。
對於新人來說可能有兩點需要注意一下:
(1)我們使用的是SingleOrDefaultAsync,但是數據查詢的是Limit 2,這是因為SingleOrDefaultAsync在返回數據超出1的時候會拋出異常,數據行數為0則輸出null,所以需要至少2才能判斷是否是>1;
(2)另外還有個注意的點是:控制台假死狀態,由於我們有時候看日誌的時候會複製裏面的內容,然後直接在vs裏面退出了調試狀態 。如下圖:
然後進行修改代碼,改完之後再點擊調試,這個時候發現項目很久都沒有啟動,這個時候要隨便輸入一下就可以,有點類似我們寫控制台的時候的ReadKey()