У меня есть простой метод для проверки пользователей при входе в систему, и я использую Fluent nHibernate
для постоянства, поэтому я естественным образом реализую ISession.QueryOver<T>
для этой работы.
Это выглядит следующим образом.
var member = session.QueryOver<Member>()
.Where(m => m.Email == Model.Email)
.Take(1).SingleOrDefault();
Ok. Итак, проблемы под рукой.
- Адреса электронной почты всегда нужно сравнивать без учета регистра.
Они должны всегда находиться в базе данных как строчные. Я сделал все возможное, чтобы это произошло. На самом деле, мой <input>
, принимающий Email Address
, имеет правило проверки, разрешающее только строчные буквы. Но это все еще не достаточно хорошо, я хочу сделать это еще глубже и сделать абсолютно уверенным, что все кошерно.
Итак, я попытался сделать это ...
var member = session.QueryOver<Member>()
.Where(m => String.Compare
(m.Email, Model.Email, StringComparison.OrdinalIgnoreCase) == 0)
.Take(1).SingleOrDefault();
Я получаю исключение, что nhibernate не может использовать метод String.Compare
.
Я понимаю, что могу решить эту проблему с помощью простого метода ToLower()
, но могут быть ситуации, когда мне нужно немного больше детализации по сравнению с другими видами сравнений.
Может кто-нибудь помочь мне разобраться, как это обойти?