日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ABP之创建实体

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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進行修改

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

轉載于:https://www.cnblogs.com/XZhao/p/8179623.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的ABP之创建实体的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。