多连接失败的Nhibernate查询版本

多连接失败的Nhibernate查询版本,nhibernate,queryover,Nhibernate,Queryover,我有一个像这样的nhibernate查询: var query = Session.QueryOver<Immobile>() .WhereRestrictionOn(i => i.Agenzia.CodiceAgenzia).IsLike(codiceAgenzia) .WhereRestrictionOn(i => i.StatoImmobi

我有一个像这样的nhibernate查询:

var query = Session.QueryOver<Immobile>()
                                .WhereRestrictionOn(i => i.Agenzia.CodiceAgenzia).IsLike(codiceAgenzia)
                                .WhereRestrictionOn(i => i.StatoImmobile.StatoImmobileId).IsLike(statoId)
                                .And(i => i.Prezzo <= prezzo)
                                .And(i => i.Mq <= metriquadri);

我做错了什么?

QueryOver语法不能以这种方式工作。不幸的是,在引用的对象上,您需要先加入它们,然后添加限制

将代码更改为如下所示:

Azengia azengiaAlias=null;   //Azengia here is typeof(Immobile.Azengia) I am assuming it is Azengia
StatoImmobile statoImmobileAlias=null;  //similarly StatoImmobile is assumed to be typeof(Immobile.StatoImmobile)
var query=Session.QueryOver<Immobile>()
.Where(i => i.Prezzo <= prezzo && i.Mq <= metriquadri)
.Inner.JoinAlias(x=>x.Agenzia,()=>azengiaAlias)
.Inner.JoinAlias(x=>x.StatoImmobile,()=.statoImmobileAlias)
.WhereRestrictionOn(() => azengiaAlias.CodiceAgenzia).IsLike(codiceAgenzia)
.WhereRestrictionOn(() => statoImmobileAlias.StatoImmobileId).IsLike(statoId);
Azengia azengiaAlias=null//这里的Azengia是一种(不动的,Azengia)我假设它是Azengia
statimmobile statimmobilealias=null//类似地,StatoImmobile被假定为typeof(不动。StatoImmobile)
var query=Session.QueryOver()
.Where(i=>i.Prezzo azengiaAlias)
.Inner.JoinAlias(x=>x.statimmobile,()=.statimmobilealias)
.WhereRestrictionOn(()=>azengiaAlias.CodiceAgenzia).IsLike(CodiceAgenzia)
其中限制(()=>statimmobilealias.statimmobileid).IsLike(statoId);

希望这有帮助。

如果您在使用任务时遇到问题,请告诉我,我应该能够帮助您解决问题。不幸的是,由于您需要对多个引用添加限制,因此无法避免。。您可能不需要一个别名。。我不明白你为什么在ID上做一个like,你可以在对象上做一个equals,然后不加入就离开。。
Azengia azengiaAlias=null;   //Azengia here is typeof(Immobile.Azengia) I am assuming it is Azengia
StatoImmobile statoImmobileAlias=null;  //similarly StatoImmobile is assumed to be typeof(Immobile.StatoImmobile)
var query=Session.QueryOver<Immobile>()
.Where(i => i.Prezzo <= prezzo && i.Mq <= metriquadri)
.Inner.JoinAlias(x=>x.Agenzia,()=>azengiaAlias)
.Inner.JoinAlias(x=>x.StatoImmobile,()=.statoImmobileAlias)
.WhereRestrictionOn(() => azengiaAlias.CodiceAgenzia).IsLike(codiceAgenzia)
.WhereRestrictionOn(() => statoImmobileAlias.StatoImmobileId).IsLike(statoId);