NHibernate QueryOver受字符串长度的限制

时间:2013-08-28 12:43:39

标签: nhibernate queryover nhibernate-criteria

如何按字符串属性的长度限制查询?例如。类似的东西:

NHSession.QueryOver<Customer>()
    .Where(p => p.RegistryCode.Length == 8)

2 个答案:

答案 0 :(得分:4)

这样的事情可能会成功

NHSession.QueryOver<Customer>()
    .Where(
        Restrictions.Eq(
            Projections.SqlFunction("length", NHibernateUtil.String, 
                Projections.Property<Customer>(x => x.RegistryCode)),
            8
        )
    )

答案 1 :(得分:1)

我应该使用这个“NHibernateUtil.Int16”类型,而不是“NHibernateUtil.Int16”类型,因为'length'参数应该始终是一个数字,而不是一个字符串。

这样的事情:

NHSession.QueryOver<Customer>()
    .Where(
        Restrictions.Eq(
            Projections.SqlFunction("length", NHibernateUtil.Int16, 
                Projections.Property<Customer>(x => x.RegistryCode)),
            8
        )
    )