将自定义唯一 属性 添加到我的 IdentityUser
Add custom unique property to my IdentityUser
我正在使用 ASP.NET Core Identity 来管理我的应用程序用户。为了存储一些额外的属性,我创建了 class "ApplicationUser",如下所示:
public class ApplicationUser : IdentityUser
{
public Guid CustomProperty { get; set; }
}
我现在想要的是,如果 CustomProperty
的值已经存在于数据库中,UserManager<ApplicationUser>
会给我一个错误。
实现此目标的最佳方法是什么?
我已经找到了这个解决方案:。但是对于这样一个简单的需求,似乎要做很多工作。难道没有某种属性可以用来装饰 属性 以实现此目的吗?提到的答案也快 3 岁了。所以我什至不确定它是否适用于 ASP.NET Core 2.2
我猜您希望 CustomProperty
有点独特。您可以使用 DatabaseGenerated
属性来实现。
像下面这样装饰你的 属性:
public class ApplicationUser : IdentityUser
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid CustomProperty { get; set; }
}
你可以阅读更多on that.
在 EF 核心中,您可以指定索引应该是唯一的,这意味着对于给定的 属性(s),任何两个实体都不能具有相同的值。
在您的 dbContext OnModelCreating
中添加以下代码并添加迁移。
modelBuilder.Entity<ApplicationUser>()
.HasIndex(b => b.CustomProperty)
.IsUnique();
我正在使用 ASP.NET Core Identity 来管理我的应用程序用户。为了存储一些额外的属性,我创建了 class "ApplicationUser",如下所示:
public class ApplicationUser : IdentityUser
{
public Guid CustomProperty { get; set; }
}
我现在想要的是,如果 CustomProperty
的值已经存在于数据库中,UserManager<ApplicationUser>
会给我一个错误。
实现此目标的最佳方法是什么?
我已经找到了这个解决方案:
我猜您希望 CustomProperty
有点独特。您可以使用 DatabaseGenerated
属性来实现。
像下面这样装饰你的 属性:
public class ApplicationUser : IdentityUser
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid CustomProperty { get; set; }
}
你可以阅读更多on that.
在 EF 核心中,您可以指定索引应该是唯一的,这意味着对于给定的 属性(s),任何两个实体都不能具有相同的值。
在您的 dbContext OnModelCreating
中添加以下代码并添加迁移。
modelBuilder.Entity<ApplicationUser>()
.HasIndex(b => b.CustomProperty)
.IsUnique();