检查用户名是否存在,区分大小写。

38 浏览
0 Comments

检查用户名是否存在,区分大小写。

这是我的函数。例如,如果用户名为james已存在,我希望用户仍然能够创建用户名为JamesJAMES等的其他用户,因为据我所知,String.Equals()是区分大小写的,但是我的函数不起作用。有什么想法为什么不起作用吗?我尝试使用compare,但它不起作用,因为它返回一个整数。

0
0 Comments

问题原因:String.Equals方法通常是区分大小写的,但是数据库的查询设置为不区分大小写。可能需要修改数据库,将字段设置为区分大小写。

解决方法:修改数据库,将字段设置为区分大小写。

0
0 Comments

问题的原因是String.equals()方法是区分大小写的,但是EF会将其转换为SQL语句,而SQL语句的大小写匹配取决于该列的排序规则(或者如果该列没有指定排序规则,则取决于数据库的排序规则)。

解决方法之一是在服务器端设置该列的排序规则为区分大小写:

ALTER TABLE Coaches
ALTER COLUMN user_name VARCHAR(20)
COLLATE Latin1_General_CS_AS

解决方法之二是在客户端通过进行大小写不敏感的搜索来获取所有匹配的记录,然后在Linq-To-Objects中进行过滤:

var query =
    from t in db.Coaches
    where String.Equals(t.user_name, username)
    select t;
exists = query.AsEnumerable()
              .Any(i => i.user_name == username);

只要你没有成千上万个具有不同大小写的相同用户名的用户,通过在Linq-To-Objects中进行过滤应该不会有太大的性能影响。

需要注意的是,更改列的排序规则将影响到使用username进行过滤或排序的任何查询,因此在进行此更改之前,请在独立环境中进行充分的测试。

0
0 Comments

当检查用户名是否存在时,出现了一个拼写问题。将以下代码中的"excists"改为"exists"。

不幸的是,这个错误并没有出现在我的真实代码中,感谢你的指正。

我想知道为什么Intellisense没有为你检测到这个错误。 🙂

0