0

我使用VS 5.0的EF 5.0(CodeFirst)。我更改了我的模型(實體)並手動更改了我的數據庫。我嘗試運行該應用程序,並出現以下錯誤:使用EF Codefirst手動同步上下文和數據庫

自從創建數據庫 以來,支持「XXXContext」上下文的模型已更改。考慮使用Code First Migrations來更新 數據庫(http://go.microsoft.com/fwlink/?LinkId=238269)。

我唯一的變化是實體屬性(數據庫中的列)的名稱。

  1. 它的自動化還是忽略了同步?對於手動完成相同的操作,只有不識別它的應用程序。或者運行驗證手動同步的東西。
  2. 應用程序記錄的同步信息在哪裏知道有變化?

感謝

+0

如果您首先使用EF代碼,那麼您不應該直接更改數據庫中的任何內容,您必須讓模型(和代碼)驅動數據庫設計。 – SOfanatic

回答

1

你必須使用數據庫初始化器或遷移的選項。在您的應用程序啓動時,您可以啓用初始化下列要求:

System.Data.Entity.Database.SetInitializer<YourDbContextType>(new DropCreateDatabaseIfModelChanges()); 

您也可以繼承,如果需要創建自己的邏輯。有關更多信息,請參閱http://www.codeguru.com/csharp/article.php/c19999/Understanding-Database-Initializers-in-Entity-Framework-Code-First.htm

您也可以啓用遷移並讓它們自動更新您的數據庫。在包管理器控制檯中運行Enable-Migrations可以執行此操作。在此處查看更多信息http://msdn.microsoft.com/en-us/data/jj591621.aspx

+0

謝謝,我用過: > System.Data.Entity.Database.SetInitializer (null) 因此,應用程序設想模型和數據庫已經同步。 –