2011-12-03 66 views
0

我有一個NHibernate的queryover這樣的:NHibernate的queryover多加入失敗

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); 

的代碼編譯,但執行上,我收到此異常:

could not resolve property: Agenzia.CodiceAgenzia of: Domain.Model.Immobile 

我在做什麼錯?這樣不幸的是在引用的對象,你需要先加入他們,然後添加限制

回答

1

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); 

希望這有助於。

+0

讓我知道如果您在使用任務時遇到issus,我應該能夠幫助您 – Baz1nga

+0

好吧,查詢轉換現在可以正常工作,但是您可以不用別名嗎? – ADIMO

+0

不幸的是,因爲你需要在多個引用上添加限制,所以你無法避免它..你可能沒有一個別名..我不明白你爲什麼要在ID上做一個像你可能porbably只是做一個等於對象,離開而不加入.. – Baz1nga