小编NYC*_*ris的帖子

如何在NHibernate Queryover where子句中执行String.IsNullOrEmpty()测试?

今天我遇到了一个情况,我们遗留数据库中的一个字段永远不应该是空的......是空的.

我对这个数据库使用NHibernate 3.2,受影响的查询是在QueryOver中编写的.

我目前的疑问是这样的

    return Session
        .QueryOver<FacilityGroup>()
        .Where(fg => fg.Owner.Id == Token.OwnerId && 
                     fg.UserName == Token.UserName)
        .OrderBy(fg => fg.Code).Asc
        .TransformUsing(Transformers.DistinctRootEntity);
Run Code Online (Sandbox Code Playgroud)

我希望它是这样的:

        return Session
            .QueryOver<FacilityGroup>()
            .Where(fg => fg.Owner.Id == Token.OwnerId && 
                         fg.UserName == Token.UserName && 
                         !string.IsNullOrEmpty(fg.Code))                
            .OrderBy(fg => fg.Code).Asc
            .TransformUsing(Transformers.DistinctRootEntity);
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,我得到一个异常"无法识别的方法调用:System.String:Boolean IsNullOrEmpty(System.String)"

所以NHibernate无法翻译string.IsNullOrEmpty.很公平.但是,当我尝试这个

        return Session
            .QueryOver<FacilityGroup>()
            .Where(fg => fg.Owner.Id == Token.OwnerId && 
                         fg.UserName == Token.UserName && 
                         !(fg.Code == null || fg.Code.Trim() == "" ))
            .OrderBy(fg => fg.Code).Asc
            .TransformUsing(Transformers.DistinctRootEntity);
Run Code Online (Sandbox Code Playgroud)

我得到一个InvalidOperationException"变量'fg'类型'Domain.Entities.FacilityGroup'从范围''引用,但它没有定义"

有什么想法吗?

nhibernate queryover

6
推荐指数
1
解决办法
3220
查看次数

标签 统计

nhibernate ×1

queryover ×1