簡體   English   中英

使用實體框架Codefirst在N層應用程序中遷移數據庫

[英]Migrating Database in a N-Tier Application with Entity Framework Codefirst

我正在嘗試在分層項目結構中使用實體框架代碼優先方法創建數據庫。 我使用標准的代碼優先控制台命令;

  • enable-migrations =>確定
  • add-migration Init =>問題:它不產生遷移代碼,只有上下方法
  • 更新數據庫 =>無事可做; 沒有變化

如何以分層結構執行此遷移? 如何跟蹤遷移更改?

您可以在github上簡單地檢查我的代碼: https : //github.com/srht/layeredIdentity

在github上的代碼中; 它曾經創建了init遷移,但是在刪除數據庫后又沒有創建這樣的初始遷移代碼。

...只有向上和向下的方法...

這就是遷移的工作方式,當您執行Update-Database ,總是存在隱式的源遷移和目標遷移,因此EF增量應用了這兩個源和目標之間的所有Up遷移方法(如果要降級,則使用Down方法)您的數據庫)。 EF生成用於每次遷移的SQL代碼,如果要查看它,可以使用-script參數運行Update-Database 這樣就不會執行任何更改,您可以檢查生成的SQL。

如何跟蹤遷移更改?

有一個名為__MigrationsHistory的表。 當您運行Update-Database EF會在該表中插入每一次應用的記錄的記錄。 下次更改模型類的代碼時,必須通過運行Add-Migration YourNewMigrationName來生成新的增量遷移。 運行Add-Migration EF會檢測到自上一次遷移以來模型中的增量更改,並生成僅包括那些更改的新遷移。 遷移文件名包含時間戳記,以便可以及時排序。

如果您運行Update-Database ,但沒有任何反應,那是因為您的數據庫是最新的,因此已應用所有掛起的遷移。 您應該在控制台中收到一些消息,告訴您“沒有要應用的顯式遷移”或類似的消息。 如果您收到有關仍在進行中的遷移的其他消息,或一些錯誤消息,則說明出現了問題。

在這里,您可以從Msdn獲得有關遷移工作方式的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM