根据http://technet.microsoft.com/en-us/library/ms187956.aspx,我有几个可更新的视图。
我的所有观点均遵循上述文章中的规范。我已在SQL Management Studio中验证了可以更新,插入和删除视图。
我所做的研究使我有了两个选项来使我的Entity Framework 5/6模型中的视图可更新:
从每个视图中删除标记,但是,任何工作 在更新上下文时,将覆盖在MyContext.edmx中完成的操作 数据库。这意味着这个解决方案对我来说不太可行 项目
为每个添加插入,更新和删除存储过程 在设计器中查看和映射这些内容。我不是特别喜欢 必须创建这么多存储过程的想法。
有没有简单的方法告诉EF5或EF6可以添加到/更新/删除的视图在运行后续“从数据库更新模型”命令时不会被删除,而无需为每个输入方法编写存储过程(在每个视图上插入,更新,删除?
答案 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类来映射它非常轻量级或每次更新数据库时都不会更新。它非常有效和可扩展
希望它会有所帮助。