如何在nHibernate中的条件中使用不区分大小写的propertyName
在简单SQL中,我们可以编写字段名不区分大小写的查询。例如,我们想查询如何在nHibernate中的条件中使用不区分大小写的propertyName,nhibernate,criteria,Nhibernate,Criteria,在简单SQL中,我们可以编写字段名不区分大小写的查询。例如,我们想查询Student表,它有一个名为Name的字段。我们可以编写如下查询(在MS SQL中): 请看这里,我们使用了name而不是name,但它仍然可以正常运行 但是当我用nHibernate这样写一个标准的时候 session.createCriteria("Student") .Add(Restrictions.Eq("name","John")).List() 它失败,错误为无法解析属性:学生姓名 是否有任何方法可以将字段/
Student
表,它有一个名为Name
的字段。我们可以编写如下查询(在MS SQL中):
请看这里,我们使用了name
而不是name
,但它仍然可以正常运行
但是当我用nHibernate这样写一个标准的时候
session.createCriteria("Student")
.Add(Restrictions.Eq("name","John")).List()
它失败,错误为无法解析属性:学生姓名
是否有任何方法可以将字段/属性名称作为直接SQL查询在条件中不区分大小写
谢谢在执行条件查询时,您正在查询POCO及其属性,当然C#中的名称区分大小写。据我所知,HQL查询也区分大小写,所以您可能运气不好。简短回答:您不能。属性名称区分大小写
详细回答:您可以解析用户的输入,并使用反射查找正确的属性名称。在我们的系统中,最终用户可以以特定格式编写查询。为了让用户的生活变得简单,我们正在考虑让字段名不区分大小写。仅此而已。从安全角度来看,直接运行用户输入的查询可能不是一个好主意。他们无法运行任何查询。正如我所说,他们不直接输入查询,有严格的格式。
session.createCriteria("Student")
.Add(Restrictions.Eq("name","John")).List()