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

本文关键字:更新 新视图 框架 实体 | 更新日期: 2023-09-27 18:32:50

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

我的所有观点都遵循上述文章中的规范。我已经在 SQL 管理工作室中验证了视图可以更新、插入和删除。

所做的研究使我有两个选项来更新我的实体框架 5/6 模型中的视图:

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

  2. 为每个存储过程
  3. 添加插入、更新和删除存储过程在设计器中查看和映射这些内容。我不是特别喜欢必须创建这么多存储过程的想法。

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

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

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

查看 XML 定义,其中说

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

您将其更改为

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

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

希望这有帮助。

我认为与其使用 .edmx,不如使用 poco 类并使用 dbcontext 和模型构建器类来映射其非常轻量级或每次更新数据库时都不会更新。 它非常高效且可扩展

希望它会有所帮助。

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