如何在nHibernate中的条件中使用不区分大小写的propertyName

如何在nHibernate中的条件中使用不区分大小写的propertyName,nhibernate,criteria,Nhibernate,Criteria,在简单SQL中,我们可以编写字段名不区分大小写的查询。例如,我们想查询Student表,它有一个名为Name的字段。我们可以编写如下查询(在MS SQL中): 请看这里,我们使用了name而不是name,但它仍然可以正常运行 但是当我用nHibernate这样写一个标准的时候 session.createCriteria("Student") .Add(Restrictions.Eq("name","John")).List() 它失败,错误为无法解析属性:学生姓名 是否有任何方法可以将字段/

在简单SQL中,我们可以编写字段名不区分大小写的查询。例如,我们想查询
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()