2011-03-17 6 views
12

私はGROUP BYと熱心な読み込みに問題があります。私は何をしているのか説明しようとしています。 は、私がイベントLinq/EF、Eagerの読み込みとGROUP BYの問題

のためのDataContext CTXを照会しているイベントクラスに持って次のプロパティ

string Description 
DateTime Date 
bool IsDeleted 
Guid SubjectId 
string Title 
DateTime Created 
Guid ForProjectId 

Person TriggeredBy 
List<Guid> Targets 

ありmuttipleのイベントが同じSubjectIdであると私はユニークSubjectIdsとし、そのイベントを持つ終わるしたいと思いますグループ内で最新のものです。私は次のクエリで終わります。

var events = from x in 
      (from e in ctx.Events 
       .Include("TriggeredBy") 
       .Include("Targets") 
       group e by e.SubjectId 
       into g 
       select new 
        { 
         GroupId = g.Key, 
         EventsWithSameSubjectId = g, 
        } 
      ) 
       select x.EventsWithSameSubjectId 
       .OrderByDescending(y => y.Created).FirstOrDefault(); 

クエリが正しくコンパイルされ、正しい結果セットが返されます。しかし、含まれているプロパティは常にnullです。私はこれがすべて含まプロパティとイベントを返す

var events = (from e in ctx.Events.OfType<DataNotificationEvent>() 
       .Include("TriggeredBy") 
       .Include("Targets") 
       select e).ToList(); 

.... eagorロードが正常に動作しているかどうかを確認するためにクエリを取り除く

これはLinq/EFの既知の問題/バグですか、このエラーを取り除く方法はありますか?

よろしく

ヴィンセントOttens

+0

グループ化(および副選択と投影)と組み合わせると熱心な負荷に問題があります。この質問を見て:http://stackoverflow.com/questions/4474951/entity-framework-include-is-not-working/4475504#4475504答えの2つのリンクされた記事は、回避策を見つけるのに役立つかもしれません。 – Slauma

答えて

9

は、あなたはとてもInclude()がそのように動作するつもりはない、匿名型に投写しています。 groupで何をして、匿名型に投影しているのかは、クエリの形を変更することなので、それは熱心なロードを捨てます。読書this articleが役に立ちます。

2

クイックアンサーのThnx。あなたは正しい方向に私を指差した。ここで私が思いついた解決策は次のとおりです。