实体框架中的视图?

Posted

技术标签:

【中文标题】实体框架中的视图?【英文标题】:VIEWs in Entity-Framework? 【发布时间】:2010-01-05 23:51:09 【问题描述】:

我有一个名为 Item 的表。

我有一个名为 ItemView 的视图,它返回 Item 的所有列 + 一个聚合列,我希望它是只读的。

我需要在实体框架中使用它,我不知道我应该如何使用它,因为当在设计器中插入视图时,所有字段都变成实体键,除了没有可用的关系,所以我可以' t 像从基表一样访问相关表作为导航属性。

有没有办法让它们都成为一个类?我还能做什么?

假设我有一个实体项目。 保存此项目后,我想从视图中检索其计算值,这是如何完成的?

我从未在 EF 中使用过视图,在这些场景中使用的最佳实践应该是什么? 欢迎任何建议、链接、博客、文章、笑话。

【问题讨论】:

【参考方案1】:

EF 设计器自动将每个 NOT NULL 字段标记为主键的一部分。您必须手动编辑 edmx 文件并更正它。正确设置主键后,您必须自己定义表和视图之间的关系。你应该阅读这个条目:

Entity Framework: Creating a model using views instead of tables

如果您不想每次更改模型时都更改 edmx 文件,则可以更改视图的定义。如果字段被识别为非空,您可以从以下位置更改视图定义:

select field_name from table_name 

select coalesce(field_name,null) field_name from table_name

这种方式字段不被识别为非空,只有视图中的主键字段被识别为非空。

【讨论】:

【参考方案2】:

我最终使用了这个扩展程序,它为我解决了所有问题:

Frustrated by lack of support for SQL-Views in ADO.NET Entity-Framework Designer?

【讨论】:

以上是关于实体框架中的视图?的主要内容,如果未能解决你的问题,请参考以下文章

实体框架中的 Oracle 物化视图问题

从实体框架中的 Oracle 视图未添加。不是主键

实体框架显示多个同一行

更新实体框架中的子表

视图和实体框架数据不对?

撤消实体框架实体中的更改