2017-06-04 4 views
0

J'ai essayé cette requête sur les critères:Interrogation sur lance exception

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

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

Et jetez-moi cette exception:

« x Variable de type zone référencée de portée, mais il ne se définit pas »

Quelqu'un sait pourquoi?

+0

J'ai écrit là non null. Je voulais retourner la zone qui contient la boutique avec l'ID 40503 (l'ID est l'exemple) –

+0

J'ai déjà essayé cela. Il me jette la même exception je sais que le problème est dans les critères sous-jacents parce que si je le change un peu ça marche (mais ne vérifie pas ce que je recherche) –

Répondre

2

Avez-vous essayé d'utiliser votre alias area?

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

Même cela semble trop compliqué. Ce serait mieux:

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