【发布时间】:2019-06-17 02:44:12
【问题描述】:
如何强制 LINQ to SQL 在数据库端进行区分大小写的比较?身份验证时,我需要密码身份验证区分大小写,而用户名不区分大小写。生成的查询不区分 SQL 服务器比较不区分大小写。
public Boolean checkLogin(string uname, string pwd)
{
DataClassesDataContext dc = new DataClassesDataContext(RetrieveConnection());
int count=(from c in dc.Logins
where c.UserName == uname && c.Password == pwd
select c).Count();
if(count>0)
{
return true;
}
else
{
return false;
}
}
【问题讨论】:
-
SQL 端会做什么样的比较取决于使用的排序规则名称。默认为
Latin1_General_CI_AS,其中CI表示不区分大小写。所以整个数据库中的所有文本都被威胁不区分大小写,并且不能在表或列级别上设置此选项。但是到底为什么要在数据库中以明文形式保存密码呢?使用哈希算法和盐并保存它。然后可以不区分大小写。
标签: linq