2016-08-03 13 views
1

このクエリを検討加入:この単純な左でネストされたクエリがサポートされていません:Entity Frameworkのは、上の失敗グループ化された左は

from e in db.MyEntities 

join o in db.MyOtherEntities 
on new e.Foo equals o.Foo into others 
from o in others.DefaultIfEmpty() 

select new 
{ 
    Value1 = e.Value1, 
    Value2 = o.Value2 
}; 

に参加し、Entity Frameworkは、以下のグループに

from e in query group e by new { } into g select g.Count() 

それを行う上で障害が発生しましたあいまいに思えるかもしれませんが、実際には自動グリッドの実装ではクエリと共通しています。

DevExtremeのデータライブラリを使用してこれが発生しました。左ジョインを含むクエリでは、合計サマリーが機能しませんでした。

from e in query group e by e.SomePropertyThatsActuallyConstant into g select g.Count() 
+0

「いいえ返答しないでください」と書くのは良いことではありません。自己回答を意図していても、他の人が自分の回答を追加することは間違いありません。 – DavidG

+0

私は何と言うことができます、私は悪い男です。 – John

答えて

1

回避策があります:

from e in query.Take(1) select { Count = query.Count(), /* other aggregates */ } 

そしてそうで、これはありません:あなたは何を得る

これはしかし働き

NotSupportedException: The nested query is not supported. Operation1='GroupBy' Operation2='MultiStreamNest' 

です。あなたが参加した後、where句を入れたときに、それはまた、作品

from e in db.MyEntities 

from o in db.MyOtherEntities.Where(o => o.Foo == e.Foo).DefaultIfEmpty() 

select new 
{ 
    Value1 = e.Value1, 
    Value2 = o.Value2 
}; 

不思議なこと:あなたはこのようなクエリを書くことができます

from e in db.MyEntities 

join o in db.MyOtherEntities 
on new e.Foo equals o.Foo into others 
from o in others.DefaultIfEmpty() 

where e.Value1 == e.Value1 

select new 
{ 
    Value1 = e.Value1, 
    Value2 = o.Value2 
}; 

句の条件が私はEFがあると思い、単に定数であってはなりませんザ・そうでなければそれを減らすのに十分スマートです。

関連する問題