在nHibernate QueryOver< T>期间无法比较字符串. [英] Cannot Compare Strings during nHibernate QueryOver<T>

查看:87
本文介绍了在nHibernate QueryOver< T>期间无法比较字符串.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的方法来尝试验证用户登录时的身份,并且我使用Fluent nHibernate进行持久化,因此我自然实现了ISession.QueryOver<T>来完成这项工作.

I've got a simple method to try and validate users when they login,and I use Fluent nHibernate for persistence, so I naturally implement an ISession.QueryOver<T> to do this work.

如下所示.

var member = session.QueryOver<Member>()
   .Where(m => m.Email == Model.Email)
   .Take(1).SingleOrDefault();

好的.那么,眼前的问题.

Ok. So then, the problems at hand.

  1. 电子邮件地址始终需要区分大小写.

它们应该始终在数据库中以小写形式出现.我竭尽全力做到这一点.实际上,我接受Email Address<input>上面有一个验证规则,只允许小写字母.但这还不够好,我想进一步加深并绝对确保所有内容都是犹太洁食.

They should always be in the database as lowercase. I have gone to great pains to make this happen. And in fact, my <input> that accepts the Email Address has a validation rule on it to only allow lowercase letters. But that's still not good enough, I want to make this even deeper and make absolutely sure that everything is Kosher.

所以我尝试这样做...

So I tried doing this...

var member = session.QueryOver<Member>()
   .Where(m => String.Compare
         (m.Email, Model.Email, StringComparison.OrdinalIgnoreCase) == 0)
   .Take(1).SingleOrDefault();

我得到一个例外,即nhibernate无法使用String.Compare方法.

I get an exception that nhibernate cannot use the String.Compare method.

我意识到我可以用普通的ToLower()方法来解决这个问题,但是在某些情况下,我希望比其他类型的比较有更多的粒度.

I realize I can solve this with just the plain ToLower() method, but there may be situations where I want a bit more granularity over other kinds of comparisons.

有人可以帮我弄清楚如何解决这个问题吗?

Can someone help me figure out how to get around this?

推荐答案

使用IsInsensitiveLike可以采用多种方法:

There are multiple ways of doing this, with a IsInsensitiveLike:

   var member= Session.QueryOver<Member>()
       .WhereRestrictionOn(m=>m.Email).IsInsensitiveLike(Model.Email)
       .Take(1).SingleOrDefault();

这篇关于在nHibernate QueryOver&lt; T&gt;期间无法比较字符串.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆