entityframework 为什么根据表中的某个视图始终映射实体失败

entityframework 为什么根据表中的某个视图始终映射实体失败,第1张

我们在使用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的主键列

异常中有一句(请参见内部异常),一直都没有当回事,后来实在没办法就静下心来看了看,内容异常内容如下:

InnerException: System.Data.SqlClient.SqlException

HResult=-2146232060

Message=Implicit conversion from data type nvarchar to varbinary is not allowed. Use the CONVERT function to run this query.

Message表名无法从nvarchar转化为varbinary,后来经过仔细查看数据库字段设置的都是varbinary(粗心),而本意是设置为varchar

将数据库字段类型改为varchar即可解决问题


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11652638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存