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