将自定义唯一属性添加到我的标识用户



我正在使用 ASP.NET 核心身份来管理我的应用程序用户。为了存储一些额外的属性,我创建了类"ApplicationUser",如下所示:

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

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

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

我已经找到了这个解决方案:https://stackoverflow.com/a/39125762/4046585。但是,对于如此简单的要求,似乎要做很多工作。难道没有某种属性可以装饰房产以实现这一目标吗?另外提到的答案也快3岁了。所以我什至不确定它是否适用于 ASP.NET Core 2.2

在 EF core 中,可以指定索引应该是唯一的,这意味着对于给定属性,没有两个实体可以具有相同的值。

在数据库上下文OnModelCreating中添加以下代码并添加迁移。

modelBuilder.Entity<ApplicationUser>()
.HasIndex(b => b.CustomProperty)
.IsUnique();

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

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

像下面这样装饰您的财产:

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

您可以阅读更多内容。

相关内容

  • 没有找到相关文章

最新更新