在带有种子实体的 table 中添加数据后出现重复键错误
Duplicate key error after adding data in a table with seeded entities
情况如下:我正在使用 .NET 5 和 Entity Framework。我有一个播种机,看起来像这样:
public static void Seed(this ModelBuilder modelBuilder)
{
Entity[] entities = new Entity[]
{
new Entity
{
Id = 1,
Description = "Test description 1"
},
new Entity
{
Id = 1,
Description = "Test description 1"
}
}
}
我的实体如下,没什么特别的:
public class Entity
{
[Key]
public ins Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public IList<AnotherEntity> AnotherEntity { get; set; } = new List<AnotherEntity>();
}
我想向数据库添加另一个实体(我正在使用 MySQL),不是直接从数据库中添加,而是使用 EF,但是当我尝试这样做时(调用 .SaveChanges()),我得到一个错误,说 PK 中存在重复,因为 EF 不理解这个 table.
中已经有数据
处理问题的最佳方法是什么?
谢谢!
我发现如果在 OnModelCreating 方法中添加:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<MyEntity>().Property(b => b.Id).ValueGeneratedOnAdd();
}
数据库设法理解已经有种子数据并生成不重复的 ID。
情况如下:我正在使用 .NET 5 和 Entity Framework。我有一个播种机,看起来像这样:
public static void Seed(this ModelBuilder modelBuilder)
{
Entity[] entities = new Entity[]
{
new Entity
{
Id = 1,
Description = "Test description 1"
},
new Entity
{
Id = 1,
Description = "Test description 1"
}
}
}
我的实体如下,没什么特别的:
public class Entity
{
[Key]
public ins Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public IList<AnotherEntity> AnotherEntity { get; set; } = new List<AnotherEntity>();
}
我想向数据库添加另一个实体(我正在使用 MySQL),不是直接从数据库中添加,而是使用 EF,但是当我尝试这样做时(调用 .SaveChanges()),我得到一个错误,说 PK 中存在重复,因为 EF 不理解这个 table.
中已经有数据处理问题的最佳方法是什么?
谢谢!
我发现如果在 OnModelCreating 方法中添加:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<MyEntity>().Property(b => b.Id).ValueGeneratedOnAdd();
}
数据库设法理解已经有种子数据并生成不重复的 ID。