将自定义唯一属性添加到我的IdentityUser

时间:2019-05-07 14:33:18

标签: c# asp.net-core asp.net-identity identityserver4

我正在使用ASP.NET Core Identity管理我的应用程序用户。为了存储一些其他属性,我创建了类“ ApplicationUser”,其外观如下:

public class ApplicationUser : IdentityUser
{
    public Guid CustomProperty { get; set; }
}

我现在想要的是,如果数据库中已经存在UserManager<ApplicationUser>的值,CustomProperty给我一个错误。

实现此目标的最佳方法是什么?

我已经找到了以下解决方案:https://stackoverflow.com/a/39125762/4046585。但是,对于这样一个简单的要求似乎需要做大量的工作。我是否可以使用某种属性来装饰属性以实现此目的?另外,提到的答案将近3年了。所以我什至不确定它是否可以在ASP.NET Core 2.2中使用

2 个答案:

答案 0 :(得分:2)

在EF核心中,您可以指定索引应该是唯一的,这意味着给定属性的两个实体都不能具有相同的值。

在dbContext $('# satu').focus();中添加以下代码,并添加迁移。

<input ... onfocusout="return validateForm()" autofocus hidden>

请参阅https://docs.microsoft.com/en-us/ef/core/modeling/indexes

答案 1 :(得分:1)

我猜您希望CustomProperty是独一无二的。您可以使用DatabaseGenerated属性来实现。

如下所示装饰您的财产:

    public class ApplicationUser : IdentityUser
     { 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid CustomProperty { get; set; }

 }

您可以阅读更多on that.