2017-06-04 5 views
0

ich diese Abfrage über Kriterien versucht:Abfrage über wirft Ausnahme

Area area = null 
var res = session.QueryOver<Area>(() => area); 

res.UnderlyingCriteria.Add(Expression.Where<Area>(x => x.shops.where(s => s.Id == 40503) != null)); 

Und es wirft mir diese Ausnahme:

„Variable x vom Typ Fläche von Umfang Bezug genommen wird, aber es ist nicht definiert“

Jemand weiß, warum es passiert?

+0

Ich schrieb dort nicht null. Ich wollte einen Bereich zurückgeben, der einen Shop mit der ID 40503 enthält (die ID ist ein Beispiel) –

+0

Ich habe das schon versucht. Es wirft mich die selbe Ausnahme ich weiß, dass das Problem in den zugrunde liegenden Kriterien ist, denn wenn ich es ein bisschen ändere es funktioniert (aber nicht, was ich suche) –

Antwort

2

Haben Sie versucht, Ihren area Alias ​​zu verwenden?

res.UnderlyingCriteria.Add(Expression.Where<Area>(() => area.shops.where(s => s.Id == 40503) != null)); 

Auch das scheint zu kompliziert. Das wäre besser:

Area area = null; 
Shop shop = null 
var res = session.QueryOver<Area>(() => area) 
.Left.JoinAlias(() => area.shops,() => shop) 
.Where(() => shop.Id == 40503);