首页 > 解决方案 > 从数据库更新模型正在更新数据库

问题描述

我有一个实体框架.edmx文件,其中一个模型基于 Azure 上的 SQL Server 实例中的视图。我改变了这个视图,使它包含一个额外的列。

在 SQL Server Management Studio 中,该ALTER语句成功执行,没有发生任何事件。之后,SELECT * FROM theView确实按预期显示新列。

转向 Visual Studio 中的解决方案,我打开.edmx文件以显示模型的设计图面。然后我右键单击并选择Update Model from Database。我看到更新向导并切换到刷新选项卡。选项卡上显示了许多视图。这确实包括最近更改的那个。

更新向导:刷新选项卡

我单击完成,几秒钟后向导完成。但是,数据库中的视图不再具有通过运行上述SELECT语句并在设计模式下查看其结构所确认的附加字段。出乎意料,但与现在缺少的列一致,我的解决方案在尝试返回相应的时遇到此错误DbSet

System.Data.SqlClient.SqlException:列名无效

我已经阅读了一些相关项目,这些项目表明该Update Models from Database功能存在问题和怪癖:

尽管如此,这些都没有提到我所看到的行为。另外我认为我的步骤与本教程一致。无可否认,它已经过时了,但除了最终结果之外的一切似乎都在 VS 2017 中排列。

我期望生成的模型应该符合数据库而不是反之亦然完全不正确吗?我可能错过了一些步骤或设置。


更新[2019-06-19] 尽管询问它的评论员重新考虑了这可能是一个红鲱鱼,但为了完整起见,我会提到它。OnModelCreatingfor 上下文看起来像这样(这是默认设置):

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

标签: c#sql-serverentity-frameworkdatabase-schemasql-view

解决方案


推荐阅读