2011-01-13 167 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)为您管理这些安全框架。