Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Fluent NHibernate,其中位于空字符串上_C#_Sql_.net_Nhibernate_Fluent - Fatal编程技术网

C# Fluent NHibernate,其中位于空字符串上

C# Fluent NHibernate,其中位于空字符串上,c#,sql,.net,nhibernate,fluent,C#,Sql,.net,Nhibernate,Fluent,我正在FluentNH中对IQueryOver应用.Where()-限制,例如: .Where(x => x.Col1 == null || x.Col1 == ""); 这将生成以下SQL: WHERE (Col1 IS NULL OR Col1 = NULL) 如何让NH理解空字符串意味着空字符串?您可以这样编写Where子句: .Where(Restrictions.On<ClassType>(obj => obj.Col1).IsNull ||

我正在FluentNH中对
IQueryOver
应用
.Where()
-限制,例如:

.Where(x => x.Col1 == null || x.Col1 == "");
这将生成以下SQL:

WHERE (Col1 IS NULL OR Col1 = NULL)

如何让NH理解空字符串意味着空字符串?

您可以这样编写
Where
子句:

.Where(Restrictions.On<ClassType>(obj => obj.Col1).IsNull ||
       Restrictions.On<ClassType>(obj => obj.Col1).IsLike(@""))
.Where(Restrictions.On(obj=>obj.Col1).IsNull||
限制.On(obj=>obj.Col1).IsLike(@“”)

可选地,如果您在几个查询上这样做,您应该考虑创建一个查询扩展名:

public static class QueryExtention {
    public static IQueryOver<E, F> WhereStringIsNullOrEmpty<E, F>(this IQueryOver<E, F> query, Expression<Func<E, object>> expression) {
        var property = Projections.Property(expression);
        var criteria = Restrictions.Or(Restrictions.IsNull(property),
                                       Restrictions.Eq(property, string.Empty));
        return query.Where(criteria);
    }
}
公共静态类查询扩展{
公共静态IQueryOver,其中StringIsNullOrEmpty(此IQueryOver查询,表达式){
var属性=Projections.property(表达式);
var条件=限制。或(限制。IsNull(属性),
Eq(属性,string.Empty));
返回查询,其中(条件);
}
}
然后您应该能够创建如下内容:

.QueryOver<ClassType>()
.WhereStringIsNullOrEmpty(obj => obj.Col1)
.QueryOver()
.WhereStringIsNullOrEmpty(obj=>obj.Col1)

Kay。看起来要详细得多。ORM将
转换为
NULL
”有什么具体原因吗?@Andreaserikson对此不确定。我从未见过这种情况。您使用的是哪个版本的NHibernate?你确定代码是这样的吗?