【问题标题】:Nhibernate queryover with multiple join fail具有多个连接的休眠查询失败
【发布时间】:2011-12-03 16:01:57
【问题描述】:

我有一个像这样的休眠查询:

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

我做错了什么?

【问题讨论】:

    标签: nhibernate queryover


    【解决方案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);
    

    希望这会有所帮助。

    【讨论】:

    • 如果您在使用任务时遇到了 issus,请告诉我,我应该可以帮助您
    • 不幸的是,因为您需要对多个引用添加限制,所以您无法避免它。您可能没有一个别名。可能只是在对象上做一个 equals 并且不加入就离开..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多