到目前为止,我认为我可以做到:
var num = db.MyTable.Include(x => x.RelatedTable)
.Count( x.idTenant == CurrentTenantID && x.Active &&
x.RelatedTable.SomeProperty.Value == true);
这总是返回零记录。 我错误地认为包括RelatedTable我可以在where部分使用它吗?
顺便说一句......“SomeProperty”是Nullable,这就是“.Value”的原因。
我正在使用Entity Framework 4.1。 (数据库优先)
答案 0 :(得分:1)
如果您只想访问Include
部分中的导航属性,则无需使用Where
。 Include
仅用于将(急切加载)相关记录与数据库中的主记录一起提取到您的应用程序,但如果您只想计算记录则没有意义。
答案 1 :(得分:1)
您是否想要获取记录数量?如果是这样,为什么你甚至需要Include
?实体框架在评估您的RelatedTable
条件时会为您设置Count
实体集。另外,如果SomeProperty
是bool?
,您应该在检查值本身之前检查它是否有值。
var num = db.MyTable.Count(x =>
x.idTenant == CurrentTenantID &&
x.Active &&
(x.RelatedTable.SomeProperty.HasValue &&
x.RelatedTable.SomeProperty.Value));