VB.NET LINQ方法语法不允许来自“整数”的隐式转换?到'整数'

时间:2016-05-13 08:15:58

标签: vb.net entity-framework linq entity-framework-6

使用LINQ和Entity Framework时比较奇怪。 我想从我的数据库中检索一个ID,我收到这个奇怪的消息。

我可以简单地修复它,但我想理解为什么会发生这种情况。

问题

为什么即使用“HasValue”检查或使用“FirstOrDefault”,我也会收到此错误消息?在我看来它不能为空,但我显然想念一些东西。

Code and Error

3 个答案:

答案 0 :(得分:2)

如果您100%确定public class ata { public static byte[] a(byte[] bArr, String str) { try { return ata.a(bArr, str.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return null; } } public static byte[] a(byte[] bArr, byte[] bArr2) { try { Cipher instance = Cipher.getInstance("RC4"); instance.init(2, new SecretKeySpec(bArr2, "RC4")); return instance.update(bArr); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return null; } catch (NoSuchPaddingException e2) { e2.printStackTrace(); return null; } catch (InvalidKeyException e3) { e3.printStackTrace(); return null; } } } 有值,请添加.Value

  

即使我查看“HasValue”

,为什么会收到此错误消息

实体框架只使用您提供的对象。它无法创建OPX_不可为空的新对象。

答案 1 :(得分:2)

setOpxRights函数可能将Integer作为参数而Option Strict On不允许使用Integer?隐式转换为整数。如果您确定它总是有值,请传入cctUser.OPX_Rechte.Value

答案 2 :(得分:1)

编译器并不完美,我们可以看到OPX_Rechte会因为where语句而有一个值,但是对于编译器,你只是使用具有Integer的对象cctUser?它需要一个整数。