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

时间:2014-09-25 08:43:23

标签: c# asp.net asp.net-mvc asp.net-identity username

我已经覆盖了一系列我在ASP.NET Identity 2.0中使用的类,以便他们使用电子邮件地址字段而不是电子邮件字段。

尝试创建用户时,我说The UserName field is required.我已尝试覆盖ApplicationUser类中的UserName字段,该字段继承自IdentityUser [Index(IsUnique = false)]但是这只会导致创建唯一约束和非唯一索引。

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

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

2 个答案:

答案 0 :(得分:1)

以下是IUserStore - http://git.io/XZ3psA的完整实施情况。我不会说有很多工作要做。

答案 1 :(得分:0)

摆脱它的唯一真正方法是实现自己的IUserStore。这听起来像很多工作几乎没有实际收获。

请参阅UserManager的方法FindByNameAsync()IUserStore<TUser, in TKey>也要求方法Task<TUser> FindByNameAsync(string userName)出现在实现类中。

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

这是不值得的。