实体框架5/6中的可更新视图

pud*_*n13 29 c# entity-framework-5 entity-framework-6

根据http://technet.microsoft.com/en-us/library/ms187956.aspx,我有几个可更新的视图.

我的所有观点都遵循上述文章中的规范.我已在SQL Management Studio中验证了可以更新,插入和删除视图.

我所做的研究使我有了两个选项来使我的Entity Framework 5/6模型中的视图可更新:

  1. 从每个视图中删除标记,但是,从数据库更新上下文时,MyContext.edmx中完成的任何工作都会被覆盖.这意味着这个解决方案对我的项目来说不太可行.

  2. 为每个视图添加插入,更新和删除存储过程,并将它们映射到设计器中.我不特别喜欢创建这么多存储过程的想法.

是否有任何简单的方法告诉EF5或EF6可以添加/更新/删除视图在运行后续"从数据库更新模型"命令时不会被删除,而无需为每个输入方法编写存储过程(插入,更新) ,删除)在每个视图?

Jam*_*rst 8

我认为最简单的方法是更改​​StorageModel中EntitySet的定义,告诉它将其视为表,而不是数据库视图.

查看XML定义,它所说的位置

<EntitySet Name="Products" store:Type="Views" ..
Run Code Online (Sandbox Code Playgroud)

你把它改成了

<EntitySet Name="Products" store:Type="Tables" ..
Run Code Online (Sandbox Code Playgroud)

(注意"产品"只是一个例子)这应该在你的.edmx文件中.
参见第44页,Lerman,"编程实体框架",第2版.

希望这可以帮助.