我在数据库中创建了一个视图,希望将其包含在实体模型中。但是,当我尝试通过VS 2008更新实体模型时,警告消息通知我正在尝试添加的表或视图没有主键。
似乎为了将视图添加到模型中,必须具有关键字段!如果视图不允许具有关键字段,至少在我使用的firebird数据库管理系统中,如何将此视图添加到我的模型中?
有什么解决方法吗?
我在数据库中创建了一个视图,希望将其包含在实体模型中。但是,当我尝试通过VS 2008更新实体模型时,警告消息通知我正在尝试添加的表或视图没有主键。
似乎为了将视图添加到模型中,必须具有关键字段!如果视图不允许具有关键字段,至少在我使用的firebird数据库管理系统中,如何将此视图添加到我的模型中?
有什么解决方法吗?
这里有一个很好的答案:Entity Framework 和 SQL Server 视图问题(请查看被接受的答案:https://dev59.com/9nNA5IYBdhLWcg3wUL_n#2715299)。
EF会通过组合所有非空字段来推断视图的主键。您可以使用ISNULL和NULLIF来操作视图列的可空性,从而强制EF选择您想要的主键。
Firebird视图中没有键。相反,使用以下命令将一个或多个字段设置为“非空”:
update RDB$RELATION_FIELDS set RDB$NULL_FLAG = 1 where (RDB$FIELD_NAME = 'A_FIELD') and (RDB$RELATION_NAME = 'A_VIEW')
然后在实体框架中重新导入数据库。