ABP之創建實體


ABP框架是一個非常龐大的框架,里面的東西有很多,那么如果我需要使用ABP進行項目的開發,具體的使用流程是怎樣的呢?接下來將以一個簡單的電影票管理“系統”為例子具體的實現一下。

一. 實體的創建

實體是屬於領域層的,所以我們創建到Core項目中

1.創建實體的時候需要繼承自Entity,這個是遵循了ABP框架的規則,在ABP中所有的實體都是繼承自Entity,Entity這個類實際上是實現了IEntity這個接口,這個接口中默認的已經定義了Id這個屬性,所以我們的實體不需要寫Id屬性,默認的Id是int的主鍵類型,當需要其它類型,可以使用Entity的泛型類,例如Entity<long>

2. 在實際的項目中,我們經常有一些常用的字段,比如創建時間CreationTime、軟刪除IsDeleted、創建人CreatorUserId等等,這些在ABP框架中都已經實現了相應的審計接口和審計實現類。ABP建議如果沒有特殊的情況,何必費力自己去實現接口呢?嘿嘿,直接使用實現類,我上面的實體中使用了審計接口ICreationTime,然后自己實現了這個CreationTime這個屬性。其他的在這里不再舉例。

3. 作為一個數據庫遷移的優化。需要對string類型指定相應的長度,否則遷移到數據庫的時候將會對應Max長度,浪費空間。

二.  數據庫遷移

在我們使用CodeFirst的時候,我們需要手動的創建DbContext,在ABP框架中已經創建好了,在EntityFrameworkCore層找到DbContext,然后為我們自己定義的實體添加IDbSet

然后使用指令Add-Migration “addMovieTicket”,生成如下的遷移文件

接下來直接使用Update-database就可以了。

如果我們想在初始化的時候向數據庫中添加幾條數據,那么怎么辦呢?

這個我們可以看到在EntityFramworkCore項目下有一個Seed文件夾,這個文件夾里的文件就是用來預制種子數據的,所以我們可模仿創建相應的Creator

創建好相應的Creator,還得去調用這個Creator才行,找到SeedHelper文件,修改SeedHostDb

接下來再次Update-database(必須已經創建好相應的表,否則提示找不到對應的表)就OK了

補充一下:

常用的遷移指令

1.創建: add-migration(可以通過添加參數-Context針對某一個DbContext進行遷移)

2.更新到數據庫: update-database

3. 版本回退 update-database -migration “addMovieTicketPreview‘

 問題更正:

從我上面自定義的添加一些初始化數據的Creator就可以發現,當Context每次初始化的時候,都會去創建一個相同名稱的電影信息,數據庫如下

 

所以對Creator進行修改

這樣就解決了,只怪當初寫的時候就偷懶了。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM