1

このLambdaクエリの何が問題になっていますか?特定のタイプのProjectDocsのみを含めることができるようにしたいのですが、ProjectDocsには多くのタイプが存在する可能性があります

 ICollection<Project> projects = db.Projects
      .Include(i => i.ProjectDoc.OfType<Cover>().Where(s => s.Status == "Active"))
      .Include(i => i.ProjectDoc.OfType<Summary>().Where(s => s.Status == "Active"))
      .Include(i => i.User)
      .Include(i => i.ProjectTag.Select(t => t.Tag)).ToList();

派生クラスCover、Segment、Summaryを持つモデルProjectDocがあります。ProjectDocを含めて、後で条件で識別子列を使用する必要がありますか?いくつかのタイプは多数の結果をもたらす可能性があり、他のタイプはほんのわずかです。

私が得るエラー...

 The Include path expression must refer to a navigation property defined 
 on the type. Use dotted paths for reference navigation properties and the 
 Select operator for collection navigation properties.
 Parameter name: path

「プロジェクト」のナビゲーションプロパティはProjectDocです。派生クラスのナビゲーションプロパティはありません。私がそれを試したとき、私はたくさんの余分な鍵を手に入れました。

4

1 に答える 1

2

このシナリオはサポートされていません。関連するエンティティのセットのみをロードすることもロードしないこともできますが、エンティティのサブセットのみをロードするためにフィルタ式を適用することはできません。

APIドキュメントにInclude()は、サポートされているさまざまな式がリストされており、メソッドはInclude()、たとえば、文字列を引数として使用して、基になるメソッドに作業を委任するだけであると記載されていますObjectQuery.Include()。このメソッドのドキュメントとリンクされたページShapingQueryResultsは、これがサポートされていないことを多かれ少なかれ明らかにしています。

于 2013-01-10T23:53:18.293 に答える