您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

sqlserver某个视图无法生成EF实体模型edmx

bubuko 2022/1/25 20:07:03 sqlserver 字数 2114 阅读 1174 来源 http://www.bubuko.com/infolist-5-1.html

根本原因:EF无法将可空值字段推断为主键。 EF 无法推断出主键,因为推断的主键字段,在视图中都为null,而EF无法将可空值字段推断为主键。 解决方案: sqlservr中使用ISNULL字段,让主键字段必须不为空; 案例: 1利用已有唯一键 ISNULL(T_Habitat.PointBatch ...

 

根本原因:EF无法将可空值字段推断为主键。

EF 无法推断出主键,因为推断的主键字段,在视图中都为null,而EF无法将可空值字段推断为主键。

解决方案:

sqlservr中使用ISNULL字段,让主键字段必须不为空;

案例:

1利用已有唯一键

ISNULL(T_Habitat.PointBatchID,‘0000‘) 

ISNULL(LEFT(dbo.T_Habitat.PointBatchID,4),‘0000‘) 

2、自己创建唯一键

ISNULL(newid(), ‘00000000-0000-0000-0000-000000000000‘)as ID,

结果:

技术分享图片

 

 

 

 

 

 

思路来源:

1 、https://bbs.csdn.net/topics/391921659

 有句话:我自己已经解决了,我通过打开XML编辑器打开了之后,看到没有生成一张表被注释了,然后按照注释修改了。

<!--生成过程中发现错误:
警告 6002: 表/视图“WaterEco.dbo.V_HabitAverage”未定义主键。已推断出该键,并将定义创建为只读的表/视图。-->
<EntityType Name="V_HabitAverage">
<Property Name="PointBatchIDLeft" Type="nvarchar" MaxLength="4" Nullable="false" />
<Property Name="ID" Type="uniqueidentifier" />
</EntityType>
-->

修改视图后,生成的XML是:

<!--生成过程中发现错误:
警告 6002: 表/视图“WaterEco.dbo.V_HabitAverage”未定义主键。已推断出该键,并将定义创建为只读的表/视图。-->
<EntityType Name="V_HabitAverage">
<Key>
<PropertyRef Name="PointBatchIDLeft" />
</Key>
<Property Name="PointBatchIDLeft" Type="nvarchar" MaxLength="4" Nullable="false" />
<Property Name="ID" Type="uniqueidentifier" />
</EntityType>

 

你也可以直接修改XML来改正这个错误,当时这可能导致数据库与数据模型不一致,

下次如果数据库视图又有改动,更新视图时可能还会报错,因为生成的XML被覆盖了。

所以建议修改数据库视图。

2、https://bbs.csdn.net/topics/390911105

 

sqlserver某个视图无法生成EF实体模型edmx

原文:https://www.cnblogs.com/hao-1234-1234/p/12450129.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶