使用EF“Include”查询并在Where中包含相关表

时间:2012-07-10 15:41:49

标签: linq entity-framework-4.1

到目前为止,我认为我可以做到:

 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。 (数据库优先)

2 个答案:

答案 0 :(得分:1)

如果您只想访问Include部分中的导航属性,则无需使用WhereInclude仅用于将(急切加载)相关记录与数据库中的主记录一起提取到您的应用程序,但如果您只想计算记录则没有意义。

答案 1 :(得分:1)

您是否想要获取记录数量?如果是这样,为什么你甚至需要Include?实体框架在评估您的RelatedTable条件时会为您设置Count实体集。另外,如果SomePropertybool?,您应该在检查值本身之前检查它是否有值。

var num = db.MyTable.Count(x => 
    x.idTenant == CurrentTenantID && 
    x.Active && 
    (x.RelatedTable.SomeProperty.HasValue && 
     x.RelatedTable.SomeProperty.Value));