我是否在我的EF Core中使用快照文件,遷移文件或數據註釋來更新數據庫?

asp.net-core entity-framework-core

我正在嘗試了解在使用EF Core開發ASP.NET Core 1.0應用程序時可以選擇的不同類型的遷移路徑。當我創建我的第一個Core應用程序時,我注意到它生成了一個ApplicationDbContextModelSnapshot類,它使用ModelBuilder來構建模型。

然後我讀到如果我需要向數據庫添加一個表,我需要創建新模型並運行命令行來生成遷移文件並更新數據庫。好的,我明白了。

但是當我這樣做時,我注意到ApplicationDbContextModelSnapshot類也得到了更新。

1)這是否意味著我無法修改此ApplicationDbContextModelSnapshot類,因為它看起來每次都會重新生成?

2)我應該使用Data Annotations來構建我的模型,還是應該使用Fluent API來告訴我在ApplicationDbContext類中構建我的模型?咦?另一個構建模型的文件?

我在這裡看到了三種不同的數據庫處理方式,即快照類,數據註釋和流暢的API。我很困惑,因為今天我在上一個遷移文件中犯了一個錯誤,所以我刪除了文件,刪除了數據庫並重新進行了數據庫更新。

但通過這樣做我得到的錯誤類似於:

The index 'IX_Transaction_GiftCardId' is dependent on column 'GiftCardId'.
ALTER TABLE ALTER COLUMN GiftCardId failed because one or more objects access this column.

所以我很自然地想知道是否必須修改ApplicationDbContextModelSnapshot類。

在遷移或數據庫更新時我應該採取什麼樣的路徑,因為這三條路徑讓我感到困惑。

熱門答案

請勿修改ApplicationDbContextModelSnapshot 。它是一個設計時工件,只應在合併衝突的情況下進行修改。

要更新模型,請始終使用數據註釋或流暢的API。

有關EF遷移工作流的更多信息,請參閱代碼優先遷移 。它適用於EF6,但大部分信息仍然相關。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow