0

これまでのところ、私はできると思っていました:

 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 を使用しています。(データベースが先)

4

2 に答える 2

1

Include一部のナビゲーション プロパティにのみアクセスする場合は、使用する必要はありませんWhereIncludeは、データベースからアプリケーションへのメイン レコードと一緒に関連するレコードをフェッチ (イーガー ロード) するためにのみ使用されますが、レコードをカウントするだけの場合は意味がありません。

于 2012-07-10T15:51:54.290 に答える
1

レコード数を取得しようとしていますか? もしそうなら、なぜあなたは必要なのIncludeですか?Entity Framework は、条件RelatedTableを評価するときにエンティティ セットを遅延読み込みしますCount。また、SomePropertyが の場合bool?、値自体を確認する前に値があるかどうかを確認する必要があります。

var num = db.MyTable.Count(x => 
    x.idTenant == CurrentTenantID && 
    x.Active && 
    (x.RelatedTable.SomeProperty.HasValue && 
     x.RelatedTable.SomeProperty.Value));  
于 2012-07-10T15:51:59.540 に答える