Добавить пользовательское уникальное свойство в мой IdentityUser - PullRequest
0 голосов
/ 07 мая 2019

Я использую 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 ]

2 голосов
/ 08 мая 2019

В ядре EF вы можете указать, что индекс должен быть уникальным, что означает, что никакие два объекта не могут иметь одинаковые значения для данного свойства (свойств).

Добавьте приведенный ниже код в свой dbContext OnModelCreating и добавьте миграции.

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

См. https://docs.microsoft.com/en-us/ef/core/modeling/indexes

1 голос
/ 07 мая 2019

Полагаю, вы хотите, чтобы CustomProperty был уникальным или что-то в этом роде.Вы можете использовать атрибут DatabaseGenerated для достижения этого.

Украсьте свою собственность, как показано ниже:

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

 }

Вы можете прочитать подробнее об этом.

...