Ich habe eine einfache Methode, um zu versuchen und Benutzer zu validieren, wenn sie sich anmelden, und ich verwende Fluent nHibernate
für die Persistenz, also implementiere ich natürlich eine ISession.QueryOver<T>
um diese Arbeit zu erledigen.
Sie sieht folgendermaßen aus.
var member = session.QueryOver<Member>()
.Where(m => m.Email == Model.Email)
.Take(1).SingleOrDefault();
Ok. Nun zu den anstehenden Problemen.
- Bei E-Mail-Adressen ist die Groß- und Kleinschreibung nicht zu beachten.
Sie sollte in der Datenbank immer in Kleinbuchstaben erscheinen. Ich habe mir große Mühe gegeben, dies zu erreichen. Und in der Tat, mein <input>
die die Email Address
hat eine Validierungsregel, die nur Kleinbuchstaben zulässt. Aber das ist immer noch nicht gut genug. Ich möchte das Ganze noch weiter vertiefen und absolut sicherstellen, dass alles koscher ist.
Also habe ich versucht, dies zu tun...
var member = session.QueryOver<Member>()
.Where(m => String.Compare
(m.Email, Model.Email, StringComparison.OrdinalIgnoreCase) == 0)
.Take(1).SingleOrDefault();
Ich erhalte eine Ausnahme, dass nhibernate nicht die String.Compare
Methode.
Mir ist klar, dass ich das Problem auch mit der einfachen ToLower()
Methode, aber es kann Situationen geben, in denen ich ein wenig mehr Granularität über andere Arten von Vergleichen wünsche.
Kann mir jemand sagen, wie ich das umgehen kann?