背景:一切都進展順利,直到我創建了一個新的Model類並更改了一個現有的Model類。我成功遷移了。自創建數據庫以來,支持「ScopoContext」上下文的模型已更改。考慮使用Code First Migrations來更新數據庫
情況是我必須運行add-migration和update-database每次我建立我的項目,以避免這種異常。我不知道發生了什麼事。請幫忙。
其他:自動遷移設置爲true。我檢查了_MigrationHistory表和每一個遷移是目前有
背景:一切都進展順利,直到我創建了一個新的Model類並更改了一個現有的Model類。我成功遷移了。自創建數據庫以來,支持「ScopoContext」上下文的模型已更改。考慮使用Code First Migrations來更新數據庫
情況是我必須運行add-migration和update-database每次我建立我的項目,以避免這種異常。我不知道發生了什麼事。請幫忙。
其他:自動遷移設置爲true。我檢查了_MigrationHistory表和每一個遷移是目前有
你必須將代碼添加到您的DbContext
類:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<YourDbContext>(null);
base.OnModelCreating(modelBuilder);
}
編輯:
首次創建的模型,我們運行一個DatabaseInitializer
到做一些事情,如創建數據庫,如果它不存在或添加種子數據。
默認DatabaseInitializer
會嘗試將使用模型所需的數據庫模式與存儲在使用數據庫創建的EdmMetadata
表中的模式的散列(當Code First是創建數據庫的代碼時)進行比較。
現有數據庫不會有EdmMetadata
表,因此不會有散列,並且如果該表丟失,則今天的實現將拋出。
在我們發送失敗版本之前,我們將努力改變此行爲,因爲它是默認版本。在此之前,現有的數據庫通常不需要任何數據庫初始化,因此它可以通過調用關閉您的上下文類型:
Database.SetInitializer<YourDbContext>(null);
非常感謝。讓我試試更多:) –
答案更新! –
加上'OnModelCreating'你'YourDbContext' –
請你解釋一點。我工作的這已經實施了法批號的這樣的現有項目: 'modelBuilder.Entity() .HasMany(E => e.useraccount) .WithRequired(E => e.account) .WillCascadeOnDelete(false); ' 我需要在這裏手動添加我的新模型類嗎? –