我正在从数据库验证用户名(不区分大小写)和密码(区分大小写)
我正在使用 Entity Framework 5.0 与数据库交互
在数据库密码是
“0x11A46971EFF1E1A2CA228CF592CA37DC77E7CCF759602D53629C22B693AEEE96CCD9F889D8E9A92C19391E6BD2DD07E741E9B7AA07E391ACDC939B993C9D7F5D”
当我将密码的大小写更改为更低时,我期望 null 以换取我的以下代码块
“0x11a46971eff1e1a2ca228cf592ca37dc77e7ccf759602d53629c22b693aeee96ccd9f889d8e9a92c19391e6bd2dd07e741e9b7aa07e391acdc939b993c9d7f5d”
但它不会失败并返回正确的用户实体。
using (var context = new MyDbContext(ConnectionString))
{
return context.Users.Where(x => (x.Name.Equals(userName, StringComparison.OrdinalIgnoreCase) && x.Password.Equals(password))).FirstOrDefault();
}
而如果我得到所有用户然后比较它会给出正确的输出,即 user == null
using (var context = new MyDbContext(ConnectionString))
{
var users = context.Users.ToList();
return users.Where(x => (x.Name.Equals(userName,StringComparison.OrdinalIgnoreCase) && x.Password.Equals(password))).FirstOrDefault();
}
这很奇怪?为什么会这样?如何从 LINQ 编写区分大小写的查询到 SQL?