视图和实体框架

Posted

技术标签:

【中文标题】视图和实体框架【英文标题】:Views and Entity Framework 【发布时间】:2010-11-17 01:44:17 【问题描述】:

我在我的数据库中创建了一个视图,我想将它包含在我的实体模型中。但是,当我尝试通过 VS 2008 更新实体模型时,一条警告消息通知我我尝试添加的 TABLE OR VIEW 没有主键。

看来要给模型增加一个视图,这个必须有一个关键字段!如果不允许视图具有关键字段,我如何将此视图添加到我的模型中,至少在我正在使用的 DBMRS 的 firebird 中。

知道如何解决这个问题吗?

【问题讨论】:

这篇文章可能会有所帮助:http://smehrozalam.wordpress.com/2009/08/12/entity-framework-creating-a-model-using-views-instead-of-tables/ 这是一个 Visual Studio 扩展,可以为您完成这一切,请查看这篇文章:Frustrated by lack of support for SQL-Views in ADO.NET Entity-Framework Designer? 【参考方案1】:

这里有一个很好的答案:Entity Framework and SQL Server View(请参阅接受的答案:https://***.com/a/2715299/53510。)

EF 通过组合所有不可为空的字段来推断视图的 PK。您可以使用 ISNULL 和 NULLIF 来操作视图列的可空性,从而强制 EF 选择您想要的 PK。

【讨论】:

如果您使用 ISNULL 或 NULLIF,这会使字段成为只读的,因此视图大部分变为只读视图。这仅在某些情况下有用【参考方案2】:

firebird 视图中没有键。相反,使用以下命令将一个(或多个)字段设置为“非空”:

update RDB$RELATION_FIELDS set RDB$NULL_FLAG = 1 where (RDB$FIELD_NAME = 'A_FIELD') and (RDB$RELATION_NAME = 'A_VIEW')

然后在实体框架中重新导入数据库。

【讨论】:

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

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

实体框架和 SQL Server 视图

首先将可更新视图与实体框架代码一起使用

如何使用实体框架测试视图?

实体框架 - Linq 中的数据库视图或连接到实体

实体框架显示多个同一行