5

在我的應用程序中,通過一些遷移啓用了代碼優先遷移,同時我還使用SQL Server Compact進行集成測試。實體框架6 - 啓用遷移時不創建表格

當我運行我的測試中,實體框架創建一個空數據庫並嘗試向空的數據庫上運行遷移和拋出The specified table does not exist.

基於this報告,我認爲在實體框架6遷移的使用發生了變化。

我使用Context.Database.Create();測試了所有數據庫初始化程序,但是在任何情況下都不會創建tabale。

+0

遷移工作一如既往。您需要MigrateDatabaseToLatestVersion初始值設定項。 –

+0

我測試過了,表格沒有創建。 –

回答

14

我不不知道這是否是EntityFramework的bug,但是當我將默認(Projectname/Migrations)中的Migration Configuration類的名稱空間重命名爲任何默認名稱時,遷移都可以正常運行。

+0

OMG它確實有效... – TamarG

+0

它確實有效。更改名稱空間可能不夠,還要更改類名稱。在運行時似乎有某種名稱衝突... – Jerther

+0

這真的很奇怪。它也適用於我。爲什麼這有效解釋? – digitalmonkey

0

Context.Database.Create()不會執行遷移!它只創建空的分貝。要更新代碼數據庫最新版本,你需要使用DbMigrator.Update方法:

var migrator = new DbMigrator(new MyMigrationsConfiguration()); 
migrator.Update(); 

或者您可以使用MigrateDatabaseToLatestVersion

Database.SetInitializer(new MigrateDatabaseToLatestVersion<BlogContext, Configuration>()); 

它詳細說明如下:http://msdn.microsoft.com/en-us/data/jj591621.aspx#initializer

-1

它在添加模型和運行add-migration命令時發生。

下面是這個問題的最簡單的原因:

新添加的模型屬性添加到IdentityDbContex類。

步驟如下:

  1. 創建模型
  2. 添加屬性變爲IdentityDbContex類
  3. 運行Add-遷移
  4. 更新數據庫