質問

次のクエリは、実行時にテーブルのロードに失敗します。

IEnumerable<Bookmark> tempBookmarks = ListBookmarksByUserID(userID);
IEnumerable<CandidateWithBookmarks> results = (from c in _internshipEntities.CandidateSet
                                            .Include("education")
                                            .Include("progress")
                                            .Include("contacts")
                                            .Include("availability")
                                            .Include("hosttypes")
                                            .Include("hostsizes")
                                            .Include("hostcapacities")
                                            .Include("hoststates")
                                            .Include("users")
                       join b in tempBookmarks on c.ID equals b.candidates.ID
                       select new CandidateWithBookmarks()
                                  {CandidateObject = c, BookmarkObject = b});
return results;

問題に関連する記事、つまり Alex Jamesの記事「インクルードを実際にインクルードする方法」。ソリューションには1つの警告があります:

  

これを機能させるには、最終選択がエンティティである必要があります。つまり、新しい{…}を選択するのではなく、投稿を選択します。

明らかに、上記のコードブロックの問題です。積極的な読み込みを中断させない、この問題の他の既知の回避策はありますか?

役に立ちましたか?

解決

これを解決したと思いますが、この特定のインスタンスでのみ機能する可能性があります。結合後にインクルードを移動することで、クエリは機能しているように見えます:

IEnumerable<CandidateWithBookmarks> results = (
    from b in tempBookmarks
    join c in _internshipEntities.CandidateSet
                                 .Include("education")
                                 .Include("progress")
                                 .Include("contacts")
                                 .Include("availability")
                                 .Include("hosttypes")
                                 .Include("hostsizes")
                                 .Include("hostcapacities")
                                 .Include("hoststates")
                                 .Include("users")
    on b.candidates.ID equals c.ID
    select new CandidateWithBookmarks(){CandidateObject = c, BookmarkObject = b});

編集:これに似た別のクエリには外部結合も必要です。この例とは異なり、何に何を結合するかが問題になるため、いくつかの問題が発生しますが、それでも実行可能です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top