C# ASP.NET标识:使AspNetUsers中的其他字段具有唯一密钥

C# ASP.NET标识:使AspNetUsers中的其他字段具有唯一密钥,c#,asp.net,asp.net-identity,C#,Asp.net,Asp.net Identity,我正在研究ASP.NET标识。默认情况下,AspNetUsers表附带一些列,例如:ID、用户名、HashPassword、电子邮件、EmailConfirmed、电话等 默认情况下,ID列是主键,用户名具有唯一约束 如何使电子邮件和/或电话等其他字段与用户名具有相同的唯一约束 到目前为止我所做的: 我设法手动将唯一约束添加到数据库中,但是,与用户名字段不同,我无法在应用程序级别进行验证。例如:UserName字段将显示错误消息“Name XXX已被采用”,如果用户尝试使用相同的用户名注册帐户。

我正在研究ASP.NET标识。默认情况下,
AspNetUsers表
附带一些列,例如:
ID、用户名、HashPassword、电子邮件、EmailConfirmed、电话

默认情况下,
ID
列是
主键
用户名
具有
唯一约束

如何使
电子邮件
和/或
电话
等其他字段与
用户名
具有相同的
唯一约束

到目前为止我所做的:


我设法手动将唯一约束添加到数据库中,但是,与
用户名
字段不同,我无法在应用程序级别进行验证。例如:
UserName
字段将显示错误消息“Name XXX已被采用”,如果用户尝试使用相同的用户名注册帐户。

要在UserManager层强制实施唯一性,您可以实现自己的IUserValidator并检查自定义唯一性规则

您到底想做什么?确保用户名和电子邮件都是唯一的?为什么你关心电子邮件是否唯一,除非你使用它来查找用户,在这种情况下,将用户名作为他们的电子邮件,并且你已经内置了唯一的用户名。用户可以有相同的电话号码。我还看到一些IT公司对多个员工使用相同的电子邮件地址。在将这些字段设置为唯一之前,请仔细考虑。要求一个电子邮件地址只能绑定到一个用户名。我试图将“用户名”改为“电子邮件”,但这也行不通,因为我不知道如何向内置的AspNetUsers属性添加自定义验证。