我将用户名存储在我的数据库中,但希望保留用户名大小写,以便用户可以拥有诸如“FooBAR”之类的用户名。
我还希望用户名是唯一的(无论大小写)——“BaR”会导致“bar”不可用。
我看到了三种方法:
首先,我可以像这样查询我的用户表:
bool usernameAvailable = !_context.Users.Any(u => String.Equals(u.Username, username, StringComparison.OrdinalIgnoreCase));
其次,我可以像这样将两个用户名都转换为大写或小写:
username = username.ToUpper();
bool usernameAvailable = !_context.Users.Any(u => u.Username.ToUpper() == username);
第三,我可以在我的表中创建第二列来存储用户名的大写/小写版本:
username = username.ToUpper();
bool usernameAvailable = !_context.Users.Any(u => u.UsernameUpper == username);
这将需要更多的数据库空间,但最容易查询。
任何见解将不胜感激。
几乎可以肯定,之前已经回答了这个问题,所以请指出我之前任何帖子的方向,因为我无法找到我正在寻找的内容。