在我的應用程序中,通過一些遷移啓用了代碼優先遷移,同時我還使用SQL Server Compact進行集成測試。實體框架6 - 啓用遷移時不創建表格
當我運行我的測試中,實體框架創建一個空數據庫並嘗試向空的數據庫上運行遷移和拋出The specified table does not exist.
基於this報告,我認爲在實體框架6遷移的使用發生了變化。
我使用Context.Database.Create();
測試了所有數據庫初始化程序,但是在任何情況下都不會創建tabale。
在我的應用程序中,通過一些遷移啓用了代碼優先遷移,同時我還使用SQL Server Compact進行集成測試。實體框架6 - 啓用遷移時不創建表格
當我運行我的測試中,實體框架創建一個空數據庫並嘗試向空的數據庫上運行遷移和拋出The specified table does not exist.
基於this報告,我認爲在實體框架6遷移的使用發生了變化。
我使用Context.Database.Create();
測試了所有數據庫初始化程序,但是在任何情況下都不會創建tabale。
我不不知道這是否是EntityFramework的bug,但是當我將默認(Projectname/Migrations)中的Migration Configuration類的名稱空間重命名爲任何默認名稱時,遷移都可以正常運行。
OMG它確實有效... – TamarG
它確實有效。更改名稱空間可能不夠,還要更改類名稱。在運行時似乎有某種名稱衝突... – Jerther
這真的很奇怪。它也適用於我。爲什麼這有效解釋? – digitalmonkey
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
它在添加模型和運行add-migration命令時發生。
下面是這個問題的最簡單的原因:
新添加的模型屬性添加到IdentityDbContex類。
步驟如下:
遷移工作一如既往。您需要MigrateDatabaseToLatestVersion初始值設定項。 –
我測試過了,表格沒有創建。 –