2016-06-13 41 views
1

我有幾個現有的Windows控制檯應用程序使用Entity Framework 6.13來訪問數據庫表。我希望在數據庫表中添加一個新列。將新列添加到表的末尾時,現有的控制檯應用程序是否會失敗?我不會更改任何現有的列名稱或屬性。我不會改變表格中列的順序。我計劃將該列添加到數據庫表的末尾。實體框架v6.13 - 將新列添加到表

使用實體框架模型(訪問沒有新列的表)的現有生產控制檯應用程序會因更改而失敗嗎?

回答

2

不,即使將新列添加到現有數據庫表,它也不會使現有控制檯應用程序失敗。因爲,您的控制檯應用程序的實體框架配置將不知道添加到數據庫端的新添加的列。

EF Fluent API會根據您的配置始終嘗試將您的域模型與數據庫表映射。如果它映射的系統將運行沒有任何錯誤。所以,在這裏你沒有觸及Existing Database Table列,你只是添加新的列。因此,EF Fluent API可以成功地將現有數據庫與控制檯應用程序的域模型進行映射,並且控制檯應用程序可以成功運行。

注意:我假設新添加的列沒有任何約束,如NOT NULL,PRIMARY KEY等,

0

這取決於您如何在應用程序中初始化數據庫。 EF對DbContext的初始化進行比較,如果數據庫模式與DbContext中的模型不同,則默認情況下會產生錯誤。您可以使用不同的初始化策略來自定義行爲。

0

假設列上沒有任何約束,向數據庫添加列不會導致實體框架模型出現任何錯誤。由EF創建的任何記錄都將該列設置爲空,並且所做的任何更新都不會更改該列的值。

請注意,EF不會意識到您的列,並且如果您稍後進行遷移或使用dropCreate(在模型更改/始終)初始化策略時可能會丟失。

此外,數據庫中列的順序不影響實體框架。