比较使用LINQ和实体框架时的奇怪之处。 我想从我的数据库中检索一个ID,并得到这个奇怪的消息。VB.NET LINQ方法语法不允许从'Integer?'进行隐式转换到'Integer'
我可以简单地修复它,你可以看到,但我想明白为什么会这样。
问题:
为什么我得到即使我请与“的HasValue”或者我用“FirstOrDefault”此错误消息?在我看来,它不能为空,但我显然错过了一些东西。
比较使用LINQ和实体框架时的奇怪之处。 我想从我的数据库中检索一个ID,并得到这个奇怪的消息。VB.NET LINQ方法语法不允许从'Integer?'进行隐式转换到'Integer'
我可以简单地修复它,你可以看到,但我想明白为什么会这样。
问题:
为什么我得到即使我请与“的HasValue”或者我用“FirstOrDefault”此错误消息?在我看来,它不能为空,但我显然错过了一些东西。
添加.Value
如果你是100%肯定的Integer?
有一个值。
为什么我得到即使我请与“的HasValue”
实体框架只是使用你给它的对象此错误消息。它不能创建OPX_不可为空的新对象。
可以在10分钟内接受你的答案。谢谢你学到了什么。 –
setOpxRights函数大概需要一个Integer作为参数,而Option Strict On将不允许Integer?隐式转换为整数。如果你确定它总会有一个值,那么通过cctUser.OPX_Rechte.Value
编译器并不完美,我们可以看到OPX_Rechte会因为where语句而有一个值,但是对于编译器来说你是只使用一个有Integer的对象cctUser?它需要一个Integer。
请粘贴在您的实际代码中。屏幕截图很难处理。 –
即使**你**检查'HasValue','严格'政策并不在乎。你有没有尝试简单地将它投射到Integer? 'user.setID(DirectCast(cctUser.OPX_Rechte,Integer))'。既然你知道该属性有价值,它应该不是一个问题。 –
是的,我可以简单地把它,但我不喜欢只是不明白为什么我不得不这样做。 –