视图和实体框架
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')
然后在实体框架中重新导入数据库。
【讨论】:
以上是关于视图和实体框架的主要内容,如果未能解决你的问题,请参考以下文章