假設我們有一個ASP.NET MVC3網站,它使用實體框架代碼優先的方法來處理數據庫。創建和部署數據庫之後更改實體框架使用的類
該系統現在在測試環境中工作。
如果的DbContext的部分如下:
public DbSet<Incident> Incidents { get; set; }
將它導致DB-代碼協作的問題,如果我舉個例子,將屬性添加到一個事件類?
或者框架會自動更新數據庫表,並將舊的記錄,這是創建沒有新的屬性,就好像它們爲空?
假設我們有一個ASP.NET MVC3網站,它使用實體框架代碼優先的方法來處理數據庫。創建和部署數據庫之後更改實體框架使用的類
該系統現在在測試環境中工作。
如果的DbContext的部分如下:
public DbSet<Incident> Incidents { get; set; }
將它導致DB-代碼協作的問題,如果我舉個例子,將屬性添加到一個事件類?
或者框架會自動更新數據庫表,並將舊的記錄,這是創建沒有新的屬性,就好像它們爲空?
它取決於您的數據庫初始化設置。 (CreateDatabaseIfNotExists,DropCreateDatabaseWhenModelChanges,DropCreateDatabaseAlways)
如:Database.SetInitializer(新CreateDatabaseIfNotExists())
如果您沒有設置任何數據庫初始化,EF將使用默認 initlizer「CreateDatabaseIfNotExists 「它會拋出 InvalidOperationError。
如果設置爲「DropCreateDatabaseWhenModelChanges」,EF會根據您的新型號重新 數據庫。但是您還需要創建數據庫所需的 訪問權限,並且如果您處於 生產環境中,則會很危險。
如果設置爲「DropCreateDatabaseAlways」,EF將每當 你運行應用程序創建數據庫。
據我所知,它不會自動更新數據庫,您將收到一條錯誤消息,告訴您上下文已更改。那裏,你必須做一個「下降並創建」數據庫!
隨着在初始化劑使用的「DropCreateDatabaseWhenModelChanges」選項,將實際的數據重新填充,或者將所述分組的內容。桌子會丟失? –
prev的內容。桌子會丟失。 –
謝謝。在這種情況下,我需要實現某種更新算法。 –