簡體   English   中英

實體框架v6.13-向表中添加新列

[英]Entity Framework v6.13 - Adding new column to table

我有幾個使用Entity Framework 6.13訪問數據庫表的現有Windows控制台應用程序。 我希望在數據庫表中添加一個新列。 將新列添加到表末尾時,現有控制台應用程序會失敗嗎? 我不會更改任何現有的列名或屬性。 我不會更改表中列的順序。 我計划將列添加到數據庫表的末尾。

我現有的使用Entity Framework模型的生產控制台應用程序(無需新列即可訪問表)是否會因為更改而失敗?

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

EF Fluent API始終嘗試根據您的配置將您的域模型與數據庫表進行映射。 如果它映射的系統將運行而沒有任何錯誤。 因此,這里您沒有涉及“現有數據庫表”列,而僅添加了新列。 因此,EF Fluent API可以使用控制台應用程序的域模型成功映射您的現有數據庫,並且控制台應用程序可以成功運行。

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

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

假設對列沒有約束,則將列添加到數據庫不會對Entity Framework模型造成任何錯誤。 EF創建的任何記錄的列都將設置為null,並且所做的任何更新都不會更改該列的值。

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

同樣,數據庫中列的順序不會影響實體框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM