使用LINQ和Entity Framework时比较奇怪。 我想从我的数据库中检索一个ID,我收到这个奇怪的消息。
我可以简单地修复它,但我想理解为什么会发生这种情况。
问题:
为什么即使用“HasValue”检查或使用“FirstOrDefault”,我也会收到此错误消息?在我看来它不能为空,但我显然想念一些东西。
答案 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?它需要一个整数。