删除唯一的constrant并在ASP.NET Identity中使用户名为nullable

Con*_*nel 6 c# asp.net asp.net-mvc username asp.net-identity

我有一系列我已经覆盖的类用于ASP.NET Identity 2.0,因此他们使用电子邮件地址字段而不是电子邮件字段.

当试图创建它说用户The UserName field is required.我试图重写我的用户名字段ApplicationUser类继承自IdentityUser[Index(IsUnique = false)]然而这只是导致了独特的约束和正在创建一个非唯一索引.

如何覆盖IdentityUser类以使用户名可以为空且非唯一,因为我不想使用它.

注意:我完全知道您可以使用类中的AllowOnlyAlphanumericUserNames属性将电子邮件存储在用户名字段中UserValidator.我真的不喜欢这种方法,只想删除这个约束,所以我可以存储没有用户名的记录.我将修改我需要使用用户名来查看电子邮件地址的任何功能.

tra*_*max 0

摆脱它的唯一真正方法是实现您自己的IUserStore. 这听起来像是大量的工作却几乎没有任何实际收益。

请参阅 UserManager 有方法FindByNameAsync(),并且还要求实现类上存在IUserStore<TUser, in TKey>方法。Task<TUser> FindByNameAsync(string userName)

此外,您还需要创建自己的 实现IdentityDbContext,或在 中创建所需的表/关系ApplicationDbContext以删除唯一性验证。这也是另一项工作负担。

这是不值得的。