1

多対多の関係を通じていくつかのエンティティをプリフェッチする必要がある状況があります。つまり、それは古典的なBlogPost <- BlogPostTag -> Tag状況のようなものです。

はい、LoadOptionsを認識していますが、Webアプリケーションであり、リクエストパターンごとに1つのデータコンテキストを使用しているため、使用できません。

また、プロジェクションを使用して多対多の関係をプリフェッチすることはできないようです。はい?いいえ?

IQueryable<Tag>一連のブログをもとに帰りたいです。私ができる最善のことはIQueryable<IEnumerable<Tag>>、次のようにしてそれを返すことです。

public IQueryable<Tag> GetJobsCategories(IQueryable<BlogPost> blogPosts)
{
    var jobCats = from bp in blogPosts
                  select bp.BlogPostTags.Select(x => x.Tag);

    return jobCats;
}

それを平らにできますか?明らかな何かが欠けていますか?私が取ることができる別のアプローチはありますか?

いいえ、ORMを変更することはできません;-)

4

1 に答える 1

2

これは機能します。linqクエリをドリルダウンするだけです

public IQueryable<Tag> GetJobsCategories(IQueryable<BlogPost> blogPosts)
{
    return from bp in blogPosts
           from tag in bp.BlogPostTags
           select tag;
}

メソッドを次のように宣言する場合:

public static IQueryable<Tag> GetJobsCategories(this IQueryable<BlogPost> blogPosts)

queryables の拡張メソッドとして使用できます。例えば

myContext.BlogPosts.GetJobsCategories()
于 2009-12-17T23:07:41.850 に答える