将视图添加到EF模型后如何不会出现此错误

时间:2011-12-15 17:02:24

标签: c# entity-framework-4

我想使用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.

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

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

选择一种方法并按照它进行整个开发或使用(购买)设计师的一些扩展,这将允许您在这些方法之间进行交换。作为允许您有选择地更新模型和数据库的工具示例,请检查Huagati EDMX tools