ASP.NET Core 7.0: заполнение данных в DBContext

Что я должен делать?

      public class RoleTable : UserBaseEntities
{
    public String RoleName { get; set; } = "";

    public ICollection<UserInRoleTable> UserInRoleTables { get; set; } = new HashSet<UserInRoleTable>();
}

private void SeedData(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<RoleTable>().HasData(new RoleTable { Id = 1, RoleName = nameof(UserRole.Admin) });
    modelBuilder.Entity<RoleTable>().HasData(new RoleTable { Id = 2, RoleName = nameof(UserRole.Operator) });
    modelBuilder.Entity<RoleTable>().HasData(new RoleTable { Id = 3, RoleName = nameof(UserRole.Customer) });
    modelBuilder.Entity<RoleTable>().HasData(new RoleTable { Id = 3, RoleName = nameof(UserRole.Warranty) });
}

Я получаю эту ошибку:

Исходный объект для типа объекта "RoleTable" не может быть добавлен, поскольку другой исходный объект с тем же значением ключа для {'Id'} уже добавлен. Рассмотрите возможность использования DbContextOptionsBuilder.EnableSensitiveDataLogging для просмотра конфликтующих значений ключей.

Не знаю, что и как делать - пытаюсь...

1 ответ

У вас есть 2 записи сId = 3. Измените один на 4 и повторите попытку.

      modelBuilder.Entity<RoleTable>().HasData(new RoleTable { Id = 3, RoleName = nameof(UserRole.Customer) });
modelBuilder.Entity<RoleTable>().HasData(new RoleTable { Id = 3, RoleName = nameof(UserRole.Warranty) });
Другие вопросы по тегам