我有几个现有的Windows控制台应用程序,它们使用实体框架6.13访问数据库表。我希望在数据库表中添加一个新列。当新列被添加到表的末尾时,现有的控制台应用程序会失败吗?我不会更改任何现有的列名或属性。我不会更改表中列的顺序。我计划将该列添加到数据库表的末尾。
使用实体框架模型(在没有新列的情况下访问表)的现有生产控制台应用程序会因更改而失败吗?
发布于 2016-06-14 10:00:49
不,即使将新列添加到现有数据库表,也不会使现有控制台应用程序失败。因为,控制台应用程序的实体框架配置将不知道添加到数据库端的新列。
EF Fluent API总是尝试按照您的配置使用数据库表映射您的域模型。如果它的映射系统将运行没有任何错误。因此,这里您没有触及现有的Database列,而只是添加了新的列。因此,EF Fluent API可以成功地将现有数据库映射为控制台应用程序的域模型,控制台应用程序可以成功地运行。
注意:我假设新添加的列没有任何约束,如NULL、主键等。
发布于 2016-06-14 01:23:05
这取决于如何在应用程序中初始化数据库。EF对DbContext的初始化进行比较,如果数据库架构与DbContext中的模型不同,默认情况下它将产生错误。您可以使用不同的初始化策略自定义行为。
发布于 2016-06-14 02:16:02
假设列上没有约束,向数据库中添加列不会导致实体框架模型出现任何错误。EF创建的任何记录都将该列设置为null,任何更新都不会更改该列的值。
请注意,EF不会注意到您的列,如果以后进行迁移或使用dropCreate(关于模型更改/始终)初始化策略,它可能会丢失。
此外,数据库中列的顺序不会影响实体框架。
https://stackoverflow.com/questions/37800328
复制相似问题