3

各ユーザーの興味を含むユーザーをクエリしようとしていますが、興味が特定の基準を満たしている場合にのみ:

  return db.Users.Include(u => u.Interests.Where(s => s.TenantId == tenantId))

しかし、私はエラーが発生します:

インクルード パス式は、型で定義されたナビゲーション プロパティを参照する必要があります。参照ナビゲーション プロパティにはドット パスを使用し、コレクション ナビゲーション プロパティには Select 演算子を使用します。

.Where を外部にプッシュするというアイデアを試してみましたが、機能させることができませんでした。

4

2 に答える 2

5

これを試して:

return db.Users.Include("Interests").Where(u => u.Interests.Any(i => i.TenantId == tenantId));

これにより、ユーザーが読み込まれますが、tenantId が一致する場合のみです。クエリが実行されると、Interests 関連のエンティティがそれらのユーザーに対して熱心に読み込まれます。

于 2013-11-07T19:49:04.820 に答える
5

Include一部の興味のみを含めるには、メソッドを使用できません。これはサポートされていないためです。Interestsと を手動で結合する必要がありますUsers

var query = from user in db.Users
    join interest in db.Interests.Where(s => s.TenantId == tenantId)
    on user.InterestId equals interest.Id //todo:  will need to be updated
    into interests;
    select new { user, interests};
于 2013-11-07T20:00:11.747 に答える