0

Linq で大文字と小文字を区別するクエリを SQL に書き込むにはどうすればよいですか。

現在、私のクエリは次のとおりです。

   var userResults = from u in Adm.Registrations   
                     where u.UserName == userName && u.Password ==  passWord 
                     select u;

ありがとう、

4

3 に答える 3

4

決して、パスワードをプレーンテキストでデータベースやその他の場所に保存しないでください。一度もない。これは悪いです。

http://www.codinghorror.com/blog/2007/09/youre-probably-storing-passwords-incorrectly.html

ここでの私のポイントは、Redditの開発者の良い名前を泥の中に引きずり込まないことです。私たちは皆有罪です。これを読んでいるすべての開発者は、キャリアのある時点でパスワードをプレーンテキストとして保存していると確信しています。私は持っていることを知っています。責任を忘れてください。重要なことは、データベースにプレーンテキストのパスワードを保存することは固く禁じられていることを仲間に教えることです。基本的なハッシュから始めて、より良い方法があるということです。

これらの参照を使用して、最善の行動方針を決定するのに役立ててください。この猫の皮を剥ぐ方法は複数あります。パスワードの保存方法を変更することは、元の質問に対する直接の答えではなく、あなたの側でより多くの作業が必要になることを理解していますが、それは将来の頭痛の種を防ぐことができます。

これは、プレーンテキストの問題を解決するための非常に徹底的なガイドです:http: //www.codeproject.com/Articles/14537/The-Art-Science-of-Storing-Passwords

これらのリンクも 光っています:パスワードの塩漬け:ベストプラクティス?

パスワードハッシュの非ランダムソルト

これが最初の警告よりも役立つことを願っています。

于 2012-07-17T06:06:43.453 に答える
2

大文字と小文字を区別する比較を実行するようにデータベースを構成していない場合は、データベースから結果を取得した後、メモリ内で比較を実行する必要があります。

var users = Adm.Registrations
               .Where(u => u.UserName == userName && u.Password == password)
               .ToList() // this will load data into memory
               // Now perform a case-sensitive query on the in-memory data
               .Where(u => u.UserName == userName && u.Password == password); 

もう 1 つのオプションは、大文字と小文字を区別する検索を実行するようにデータベースの照合順序を変更することですが、他のクエリやストアド プロシージャで予想よりも少ない結果が得られる可能性があるため注意してください。

于 2012-07-17T06:43:25.333 に答える
0

これを試して

var userResults = from u in Adm.Registrations 
                      where u.UserName .Equals(userName,StringComparison.InvariantCultureIgnoreCase) && u.Password.Equals(passWord,InvariantCultureIgnoreCase)
                      select u;
于 2012-07-17T06:07:02.457 に答える