2014-07-21 62 views
1

如果我有一個需要模式更改的EF6 Code First環境,是否可以配置它以便我可以在代碼部署之前應用遷移(通過Update-Database -Script)?我可以使用「舊」代碼訪問已遷移的EF數據庫嗎?

我剛剛使用控制檯應用程序構建了一個包含遷移「初始」的數據庫的簡單測試,此時獲取了應用程序的副本。然後我通過向我的實體添加一個新屬性來修改模式,並添加了「V2」遷移並運行了更新數據庫。當試圖針對這個遷移的數據庫運行「舊」代碼時,我得到一個InvalidOperationException「自從創建數據庫以來,支持上下文的模型已經發生了變化。」

持續交付類型的操作是否可能需要一臺服務器運行新的應用程序代碼,其他人可能首先使用EF代碼運行舊版本?

+0

你能修改舊代碼嗎?如果是[禁用模式檢查](舊的代碼是一個選項)(http://stackoverflow.com/questions/10623260/how-can-i-disable-model-compatibility-checking-in-entity-framework-4-3) 。你確定添加的列可以爲空或者是默認值嗎? – tschmit007

+0

看起來很理想。這是爲了進行部署,以便我們可以在部署代碼之前運行腳本遷移,以便確實可以禁用初始化程序。非常感謝。 – Darran

回答

1

你能修改舊代碼嗎?

如果有的話disabling schema checking舊代碼是一個選項。

btw:你確定添加的列可以爲空或者作爲默認值嗎?

爲了避免意外,您還可以使用對模式具有隻讀權限的連接字符串以避免數據損壞。

相關問題