C# 实体框架v6.13-向表中添加新列

C# 实体框架v6.13-向表中添加新列,c#,sql-server,entity-framework,entity-framework-6,C#,Sql Server,Entity Framework,Entity Framework 6,我有几个现有的Windows控制台应用程序,它们使用Entity Framework 6.13访问数据库表。我希望向数据库表中添加一个新列。将新列添加到表的末尾时,现有控制台应用程序是否会失败?我不会更改任何现有的列名或属性。我不会更改表中列的顺序。我计划将该列添加到数据库表的末尾 我现有的生产控制台应用程序使用实体框架模型(不使用新列访问表)会因为更改而失败吗 这取决于您在应用程序中初始化数据库的方式。EF对DbContext的初始化执行比较,如果数据库模式与DbContext中的模型不同,则

我有几个现有的Windows控制台应用程序,它们使用Entity Framework 6.13访问数据库表。我希望向数据库表中添加一个新列。将新列添加到表的末尾时,现有控制台应用程序是否会失败?我不会更改任何现有的列名或属性。我不会更改表中列的顺序。我计划将该列添加到数据库表的末尾


我现有的生产控制台应用程序使用实体框架模型(不使用新列访问表)会因为更改而失败吗

这取决于您在应用程序中初始化数据库的方式。EF对DbContext的初始化执行比较,如果数据库模式与DbContext中的模型不同,则默认情况下会产生错误。您可以使用不同的初始化策略自定义行为。

假设列上没有约束,则向数据库中添加列不会导致实体框架模型出现任何错误。EF创建的任何记录都会将列设置为null,并且所做的任何更新都不会更改列的值

请注意,EF将不知道您的列,如果您稍后执行迁移或使用dropCreate(在模型更改/始终)初始化策略,它可能会丢失


此外,数据库中列的顺序不会影响实体框架。

否,即使您正在将新列添加到现有数据库表中,也不会使现有控制台应用程序失败。因为,您的控制台应用程序的实体框架配置将不知道添加到数据库端的新添加列

EF Fluent API始终尝试根据您的配置将您的域模型映射到数据库表。如果它被映射,系统将在没有任何错误的情况下运行。因此,这里没有涉及现有的数据库表列,只添加了新列。因此,EF Fluent API可以成功地将现有数据库映射到控制台应用程序的域模型,并且控制台应用程序可以成功运行


注意:我假设,新添加的列没有任何约束,如NOTNULL、PRIMARY KEY等,

如果使用ObjectContext呢(