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

时间:2013-09-24 21:14:23

标签: 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. 为每个添加插入,更新和删除存储过程 在设计器中查看和映射这些内容。我不是特别喜欢 必须创建这么多存储过程的想法。

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

2 个答案:

答案 0 :(得分:8)

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

查看XML定义,其中包含

<EntitySet Name="Products" store:Type="Views" ..

你将其改为

<EntitySet Name="Products" store:Type="Tables" ..

(注意&#34;产品&#34;只是一个例子) 这应该在您的.edmx文件中 参见第44页,Lerman,&#34; Programming Entity Framework&#34;,2nd Ed。

希望这有帮助。

答案 1 :(得分:1)

我认为不是使用.edmx而是使用poco类,并使用dbcontext和modelbuilder类来映射它非常轻量级或每次更新数据库时都不会更新。它非常有效和可扩展

希望它会有所帮助。