2017-03-06 77 views
2

可以請你向我解釋有以下區別:用裏面的代碼實體框架的核心OnModelCreating VS遷移,正確的開發流程

  • 裝飾一類具有EF核心屬性,例如DataAnnotations VS OnModel創建定義關係和映射?
  • 使用dotnet ef migrations創建遷移類添加「xyz」VS將其配置爲OnModel創建

我在嘗試做一種「開發工作流程」,但文檔並不十分清楚。

我發現我應該:

  1. 創建第一個「數據庫上下文」
  2. 創建了一組類代表我的模型
  3. 覆蓋OnModelCreating爲每個Model對象指定映射策略
  4. 執行add migrationsef update多少次我改變了一些東西

這是否與Entity Framework Core一起使用是正確的流程?

+1

'dotnet migrations添加MigrationName',並且當您想要將遷移應用到數據庫'dotnet和數據庫更新' –

+0

@ J.Doe這很明顯,但是使用EF Core的正確工作流程以及何時應該使用OnModelCreating Migration課程? – Raffaeu

回答

3

裝飾使用內部OnModelCreating代碼來定義關係和 映射與EF核心的一類屬性如DataAnnotations VS ?

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

使用dotnet創建遷移類遷移添加「xyz」VS 將其配置爲OnModelCreating?

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

我與EF的工作方式(代碼優先)是:

  1. 我寫我的實體和數據添加批註他們
  2. 我產生了遷移,並且從它那裏得到的SQL腳本,然後刪除遷移代碼
  3. 執行.SQL對數據庫
  4. 運行代碼
  5. 實體變更
  6. 生成新的遷移。SQL並將其存儲爲項目的一部分

基本上,如果要更新數據庫以與新的/更改的代碼兼容,則「遷移」是必需的。

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

+0

其實這是我需要更好地理解它是如何工作的答案,因爲在我使用每個模型的類進行映射之前,現在它全部進入OnModel創建 – Raffaeu

+0

問題是,第一次運行代碼時,它會創建數據庫表沒有遷移。 –