c# - 从数据库更新模型正在更新数据库
问题描述
我有一个实体框架.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] :尽管询问它的评论员重新考虑了这可能是一个红鲱鱼,但为了完整起见,我会提到它。OnModelCreating
for 上下文看起来像这样(这是默认设置):
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
解决方案
推荐阅读
- wso2 - 某些客户端(用户)无法调用 API。(发布者,devportal 在试用选项卡上)
- matlab - 声明 Simulink 模型变量的 Matlab 脚本
- javascript - 在 node.js 中,提交表单后,如何提示成功消息然后跳转到主页?
- c# - Visual Studio 无法打开 Windows 窗体应用程序设计器
- c# - 在 C# 函数中打开 VB.NET 表单
- sql - 如何在 sql [Oracle] 中分组并查找最大值
- google-play - 我可以在已发布的版本中添加国家/地区吗?
- r - 删除 var2 = x 的行,其中 var1=0 且下面的行具有 var1=1
- python - R相当于在Python中对空列表执行操作?
- android - 新的 Jetpack 分页库使应用程序崩溃 - 新