2012-07-10 107 views
0

到目前为止,我想我可以做相关的表:查询使用EF“包括”包括其中

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

这总是返回零个记录。 我是否错误地认为包括RelatedTable我可以在where部分使用它?

顺便说一下......“SomeProperty”是可为空的,这就是为什么“.Value”。

我正在使用实体框架4.1。 (数据库优先)

回答

1

你想获得记录数?如果是这样,为什么你甚至需要Include?实体框架将在您评估您的Count条件时,为您延迟加载RelatedTable实体集。另外,如果SomePropertybool?,则应在检查值本身之前检查它是否有值。

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

谢谢,我认为在这种情况下“包含”是强制性的。 – Romias 2012-07-10 15:59:12

1

如果您只想访问Where部分中的导航属性,则不需要使用IncludeInclude仅用于将相关记录连同从数据库到主应用程序的主记录一起提取(应急加载)到您的应用程序中,但如果您只想计数记录,则没有意义。

+0

谢谢,我认为在这种情况下,“包含”是强制性的。 – Romias 2012-07-10 15:59:23