我有一个实体框架 .edmx 文件,其中的一个模型基于Azure上SQL Server实例中的视图。我更改了此视图,以使其包括另外一列。
在SQL Server Management Studio中,ALTER
语句成功执行而没有发生任何事件。之后,SELECT * FROM theView
确实按预期显示了新列。
转到Visual Studio中的解决方案,我打开 .edmx 文件以显示模型的设计图。然后,我右键单击并选择从数据库更新模型。显示了更新向导,并切换到刷新标签。选项卡上显示了许多视图。这确实包括最近更改过的版本。
我点击完成,几秒钟后向导完成。但是,通过运行以上SELECT
语句并在“设计”模式下查看其结构,确认数据库中的视图不再具有其他字段。出乎意料,但与现在缺少的列一致,我的解决方案在尝试返回相应的DbSet
时遇到此错误:
System.Data.SqlClient.SqlException:无效的列名
我已经阅读了一些相关的内容,这些内容表明Update Models from Database
功能存在问题以及奇怪之处:</ p>
不过,这些都没有提及我所看到的行为。另外,我认为我的步骤与this tutorial相符。它已经过时了,但是除了最终结果,其他所有东西似乎都在VS 2017中出现。
我期望生成的模型应该符合数据库,而不完全相反吗?我可能缺少某些步骤或设置了吗?
更新 [2019-06-19] :尽管询问该问题的评论员将其重新考虑为可能的红色鲱鱼,但为便于说明,我将其提及完整性。上下文的OnModelCreating
如下所示(默认设置):
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}