所以这是查询:
from c in Contents
join cs in DepartmentSharings
on c.ContentId equals cs.ContentId
select c.PrivateCategoryId.Value
当我跑步时,我得到:
处理请求时数据库操作失败。 InvalidOperationException:读取时发生异常 属性'DepartmentSharing.ContentId'的数据库值。该 期望的类型是'System.Int32',但实际值是null。
现在我检查了数据库中的DepartmentSharings.ContentId
字段fk, int, not null
。在课堂上它是public int ContentId { get; set; }
。 DepartmentSharing.ContentId
不能是null
。另外,在LinqPad中我可以看到它在失败之前返回58行。
为什么我会收到此错误?
答案 0 :(得分:5)
唯一会导致该错误的是ContentId
是一个不可为空的int属性,但不知何故,您的数据库表允许该列的NULL值。假设EF正在处理您的数据库,那不应该发生,但是您可能在某些时候改变了某些内容并且没有正确迁移。
无论如何,您需要将属性类型更改为int?
而不是int
,或者更改表以使列NOT NULL并确保所有行都具有非NULL值。