繁体   English   中英

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

[英]Updatable Views in Entity Framework 5/6

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

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

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

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

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

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

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

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

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

你把它改成了

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

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

希望这可以帮助。

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

希望它会有所帮助。

您可以从视图中获取主键,并使用主键执行更新语句。 只是一种解决方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM