如何在向EF模型添加视图后不出现此错误

本文关键字:错误 视图 添加 EF 模型 | 更新日期: 2023-09-27 18:17:54

我想使用Linq to Entities从视图中选择行,所以我右键单击edmx设计器并"从数据库生成模型",然后从向导中选择视图。视图出现。我可以选择行

然而,从这一点开始,"从模型生成数据库"现在导致这个(良性的,我认为但恼人的)错误:

Msg 2714, Level 16, State 6, Line 3
There is already an object named 'vAdvertiserEmployees' in the database.
Msg 4909, Level 16, State 1, Line 3
Cannot alter 'dbo.vAdvertiserEmployees' because it is not a table.

我在这里做错了什么?

如何在向EF模型添加视图后不出现此错误

从数据库更新模型和从模型生成数据库是两种不同的方法。内置的VS EF设计器不能在没有很大痛苦的情况下从一个切换到另一个——一旦你开始使用视图等数据库结构,从数据库生成模型的方式就消失了。EDMX文件中的视图表示为从视图(称为DefiningQuery的内部元素)中进行选择的SQL查询。如果你运行从模型生成数据库整个数据库描述(SSDL部分)从EDMX文件中删除,并替换为一个新的不允许自定义SQL查询(模型不知道任何关于数据库结构,如视图)。这意味着您所有的映射视图都将成为EF的表,下一步将创建用于创建/更改表的脚本(仅使用数据库生成电源包等附加工具进行更改)。

选择一种方法并在整个开发过程中遵循它,或者使用(购买)一些扩展到设计器,这将允许您在这些方法之间切换。作为一个允许您有选择地更新模型和数据库的工具示例,请查看Huagati EDMX工具。