首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Oracle提供程序中使用LINQ-to-NHibernate中的大小写敏感Where子句?

如何在Oracle提供程序中使用LINQ-to-NHibernate中的大小写敏感Where子句?
EN

Stack Overflow用户
提问于 2010-02-19 21:02:30
回答 3查看 2.3K关注 0票数 2

例如,给定以下代码,如何使字符串比较不区分大小写?

代码语言:javascript
复制
        var query = from employeeGroup in _session.Linq<EmployeeGroup>()
                    from employee in employeeGroup.Employee
                    where employee.UserName == username
                    select employeeGroup.EmployeeGroupName;

NHibernate.Linq.SqlClient.SqlClientExtensions.Upper()方法可能会有所帮助,但这似乎只在SQL Server中可用。

如果我使用System.String类进行比较,我会得到一个错误:“如果没有投影,就无法在条件上使用子查询。”我相信这是因为NHibernate不能直接映射到SQL。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-20 00:11:34

据我所知,NHibernate Linq does not support匹配不区分大小写。这对SQL Server来说不是问题,它不区分大小写,但显然是Oracle的问题。为此,我认为您必须使用Criteria API或HQL。

票数 3
EN

Stack Overflow用户

发布于 2015-05-01 22:27:26

在使用nHibernate QueryOver时,您可以将IsInsensitiveLike与MatchMode.Exact一起使用。这使得它是不区分大小写的匹配,"Exact“表示它将与"John”与"Johnson“完全匹配,等等。

代码语言:javascript
复制
var foo = session.QueryOver<Customer>()
    .Where(x => x.Firstname.IsInsensitiveLike("John", MatchMode.Exact)).List();
票数 1
EN

Stack Overflow用户

发布于 2010-03-10 17:31:28

仅供参考,这里有一个Criteria API示例:

代码语言:javascript
复制
session.CreateCriteria(typeof(Customer))
    .Add(new Expression.EqExpression("Firstname", "John", true))
    .List<Customer>();

EqExpression方法末尾的布尔参数确定不区分大小写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2296405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档