实体框架中的视图?
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?
【讨论】:
以上是关于实体框架中的视图?的主要内容,如果未能解决你的问题,请参考以下文章