我一直在使用,因爲實體框架代碼第一次成爲可用以下方法得到:指定的表格不存在。 [__MigrationHistory]
public virtual void CreateDatabase()
{
var dbContext = _dbContextLocator.Current;
dbContext.Database.Delete();
dbContext.Database.Create();
dbContext.Database.Initialize(true);
}
最近,我注意到,當dbContext.Database.Create()
被擊中,我得到以下異常:
發生System.Data.SqlServerCe.SqlCeException
消息=指定的表不存在。 [__MigrationHistory]
源= SQL Server壓縮ADO.NET數據提供
錯誤碼= -2147467259
的HResult = -2147217865
NativeError = 0
堆棧跟蹤:在System.Data.SqlServerCe.SqlCeCommand.ProcessResults(的Int32小時)
的InnerException:
如果我去調試 - 例外,並勾選已投入「通用語言運行時例外」,這將導致停止執行,我也得到了上面的異常。如果我取消它,數據庫似乎得到正確創建的,但我得到了我的輸出窗口下面的錯誤陳述的四個重複:
型「System.Data.SqlServerCe.SqlCeException」的第一次機會異常發生在System.Data.SqlServerCe.dll中
在System.Data.SqlServerCe.dll中發生類型爲「System.Data.SqlServerCe.SqlCeException」的第一次機會異常
類型爲「System.Data.SqlServerCe.SqlCeException」的第一次機會異常'發生在System.Data.SqlServerCe.Entity.dll
在System.Data.Entity.dll
發生類型'System.Data.EntityCommandExecutionException'的第一次機會異常型「System.Data.EntityCommandExecutionException」的第一次機會異常出現在System.Data.Entity.dll
型「System.Data.EntityCommandExecutionException」的第一次機會異常出現在System.Data.Entity.dll
在dbContext.Database.Create()
周圍放置一個try/catch塊不起作用。
我的目標是創建一個完全空白的數據庫,然後手動填充數據。我不希望使用Entity Framework的新Migrations功能。
我能做些什麼來消除第一次機會異常?
我注意到你正在使用精簡版 - 你是否檢查以確保DB有_MigrationHistory表?我確實看到它試圖刪除表,但即使它最近丟失了數據庫,您可能會遇到一些奇怪的事情 - 最近我記錄了我在_MigrationHistory表中消失的經歷。它也顯示了執行的SQL,以及我如何能夠得到它再次工作[在這篇文章上](http://stackoverflow.com/questions/11672812/code-first-migrations-and-initialization-error/11908847#11908847 ) – 2012-08-13 02:15:59
我不太確定database.delete用CE做什麼,你可能想檢查它實際上是否工作,文件是否被刪除? – 2012-08-13 05:55:28
@LukeMcGregor,很好的問題,但我只是檢查,它肯定會刪除數據庫。 – devuxer 2012-08-13 17:09:08