實體框架核心OnModelCreating vs Migration,正確的開發工作流程

asp.net-core c# entity-framework-core

你可以向我解釋一下以下幾點之間的區別:

  • 使用OnModelCreating中的代碼來裝飾具有EF Core屬性(如DataAnnotations VS)的來定義關係和映射?
  • 使用dotnet和遷移創建一個遷移類添加“xyz”VS將其配置為OnModelCreating

我試圖製作一種“開發工作流程”,但文檔並不是很清楚。

我發現我應該:

  1. 創建第一個“數據庫上下文”
  2. 創建一組表示我的模型的類
  3. 覆蓋OnModelCreating以指定每個Model對象的映射策略
  4. 在我更改內容時執行add migrationsef update次數

這是使用Entity Framework Core的正確流程嗎?

一般承認的答案

使用OnModelCreating中的代碼來裝飾具有EF Core屬性(如DataAnnotations VS)的類來定義關係和映射?

數據註釋是“內聯的”,但您將實體與持久性邏輯混合在一起。在我看來,這是最佳點。 OnModelCreating使您可以使用'Fluent API',它更強大,更靈活,但/並且將持久性邏輯從您的實體中分離出來。有時你會混合使用 - 數據註釋和Fluent API。

使用dotnet和遷移創建一個遷移類添加“xyz”VS將其配置為OnModelCreating?

不確定我明白這一點。我沒有看到遷移的替代方案。

我使用EF(代碼優先)的方式是:

  1. 我編寫實體並向其添加數據註釋
  2. 我生成一個遷移並從中獲取SQL腳本,然後刪除遷移代碼
  3. 對數據庫執行.SQL
  4. 運行代碼
  5. 實體更改
  6. 生成新的遷移.SQL並將其存儲為項目的一部分

當您想要更新數據庫以與新的/更改的代碼兼容時,基本上需要“遷移”。

當你必須告訴EF實體如何映射到數據庫時, OnModelCreating是必要的。你不應該混淆這兩件事。



Related

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