码迷,mamicode.com
首页 > 其他好文 > 详细

Entity Framework 无法对没有主键的视图映射实体的解决办法

时间:2016-01-07 22:42:30      阅读:3494      评论:0      收藏:0      [点我收藏+]

标签:

我们在使用Entity Framework的时候经常会把数据库中的某一个视图映射为EF的实体,但是如果数据库视图中的列没有包含表的主键列,EF会报出警告说视图没有主键,导致映射为实体失败错误如下:

 

表/视图“{0}”未定义主键,无法推断有效的主键。已排除该表/视图。要使用该实体,您将需要检查架构,添加正确的键并对它取消注释。

English translation: The table/view ‘{0}‘ does not have a primary key defined and no valid primary key could be inferred. This table/view has been excluded. To use the entity you will need to review your schema, add the correct keys and uncomment it.

 

这时候我们需要在视图里面用sql的isnull函数生成一列不为null的为一列就行了。

比如假设现在我们的数据库中本来有一个视图叫V_Customer,它返回的列中没有包含查询表dbo.CustomersBoughtCarsSurvey的主键列,其Sql脚本如下:

CREATE VIEW [dbo].[V_Customer]
AS
SELECT    Name, Age, Sex, Nation, City
FROM      dbo.CustomersBoughtCarsSurvey

技术分享

 

那么这个视图是无法映射为Entity Framework的实体的,现在我们修改视图增加一个自动生成GUID值的列叫ID,并且使用ISNULL函数确保该列值不为空,脚本如下:

CREATE VIEW [dbo].[V_Customer]
AS
SELECT  ISNULL(NEWID(), d1e57ca7-6eee-495a-be13-73d5e7d51f36) AS Id, Name, Age, Sex, Nation, City
FROM      dbo.CustomersBoughtCarsSurvey

技术分享

我们可以看到现在在视图中多了一列id,且是not null的,现在就

Entity Framework 无法对没有主键的视图映射实体的解决办法

标签:

原文地址:http://www.cnblogs.com/OpenCoder/p/5111541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!