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) });