2016-09-22 29 views
1

背景:一切都進展順利,直到我創建了一個新的Model類並更改了一個現有的Model類。我成功遷移了。自創建數據庫以來,支持「ScopoContext」上下文的模型已更改。考慮使用Code First Migrations來更新數據庫

情況是我必須運行add-migration和update-database每次我建立我的項目,以避免這種異常。我不知道發生了什麼事。請幫忙。

其他:自動遷移設置爲true。我檢查了_MigrationHistory表和每一個遷移是目前有

+0

加上'OnModelCreating'你'YourDbContext' –

+0

請你解釋一點。我工作的這已經實施了法批號的這樣的現有項目: 'modelBuilder.Entity () .HasMany(E => e.useraccount) .WithRequired(E => e.account) .WillCascadeOnDelete(false); ' 我需要在這裏手動添加我的新模型類嗎? –

回答

1

你必須將代碼添加到您的DbContext類:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    Database.SetInitializer<YourDbContext>(null); 
    base.OnModelCreating(modelBuilder); 
} 

編輯:
首次創建的模型,我們運行一個DatabaseInitializer到做一些事情,如創建數據庫,如果它不存在或添加種子數據。

默認DatabaseInitializer會嘗試將使用模型所需的數據庫模式與存儲在使用數據庫創建的EdmMetadata表中的模式的散列(當Code First是創建數據庫的代碼時)進行比較。

現有數據庫不會有EdmMetadata表,因此不會有散列,並且如果該表丟失,則今天的實現將拋出。

在我們發送失敗版本之前,我們將努力改變此行爲,因爲它是默認版本。在此之前,現有的數據庫通常不需要任何數據庫初始化,因此它可以通過調用關閉您的上下文類型:

Database.SetInitializer<YourDbContext>(null); 
+0

非常感謝。讓我試試更多:) –

+0

答案更新! –

相關問題