2011-01-13 168 views
0

我有以下LINQ聲明:LINQ忽略大小寫

(from o in Table where (o.Username == username && o.Password == password) select o).SingleOrDefault() 

似乎這忽略大小寫。我如何確保「測試」!=「測試」等。 謝謝

+5

您確定您的SqlServer不區分大小寫嗎? – 2011-01-13 13:58:45

+2

此外,請不要將密碼存儲在數據庫中。至少,存儲密碼散列,根據用戶名檢索記錄並比較散列。 – Robaticus 2011-01-13 14:04:37

回答

7

LINQ並不是無視案件,它的SQL Server。更改COLLATION以使SQL Server區分大小寫。

1

您使用的是LINQ提供程序?它很重要。例如。 LINQ to XML區分大小寫,您必須執行ToUpperVariant()調用才能區分大小寫,並且SQL上的行爲可能會因sql整理設置而異。

2

按照克勞斯的評論,這個問題很可能是您的SQL服務器CI設置

然而,這是不好的做法來存儲密碼的明文在任何情況下 - 你應該看看hashing,甚至更好,使用安全框架(如ASP.NET Membership)爲您管理這些安全框架。