10

nHibernate で QueryOver を使用して単純なクエリを作成しようとしていますが、すべてを小文字に変換するか、機密情報を無視する必要があります。

Domain.User User = Session.QueryOver<Domain.User>()
       .Where(x=>x.Login=="username")
       .SingleOrDefault();

どうすればこれを達成できますか?

更新

問題はDBのコレクションにある可能性があると誰かが示唆しましたが、私はそれで問題が発生したことはなく、このスクリプトは機能します:

Domain.User User = Session
    .CreateCriteria<Domain.User>() 
    .Add(Expression.Eq("Login", "username")) 
    .UniqueResult<Domain.User>(); 
4

5 に答える 5

17

QueryOver では、以下を使用できます。

Domain.User User = Session.QueryOver<Domain.User>()
       .WhereRestrictionOn(x=>x.Login).IsInsensitiveLike("username")
       .SingleOrDefault();
于 2011-03-09T12:05:08.613 に答える
2

より良い方法は、データベースの照合順序を大文字と小文字を区別しないものに変更することです。データベースを変更できる場合。

于 2011-03-09T11:33:03.020 に答える
0

NH 3.0にはlinqプロバイダーがあるため、使用できます

Session.Query<Domain.User>()
           .Where(x=>x.Login.ToLower() =="username")
           .SingleOrDefault();
于 2011-03-09T10:42:25.540 に答える