有什么方法可以在 entity framework 迁移中播种数据。但我们不需要在播种时提供主键值
Is there any way to seed data on entity framework migration. but we don't need to provide primary key value on seeding
型号class:
public class Model
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
dbContext Class
public class AppDbContext : DbContext
{
public AppDbContext (DbContextOptions<AppDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Model>().HasData(
new Model {Name = "William"},
new Model { Name="Altaf"}
);
}
public DbSet<DataSeedingEntityFramework.Model> Model { get; set; }
}
迁移 dbcontext 时出现此错误:
无法添加实体类型 'Model' 的种子实体,因为 属性 'Id' 需要非零值。考虑提供负值以避免与非种子数据发生冲突。
我知道为什么会显示此错误,但我想在没有 Id 值的情况下进行迁移。应该是自增。
你应该添加
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
这将告诉 EF Core 该实体具有自动增量字段 ID。
要在迁移中启用数据种子,请将代码从 DbContext class 中的 OnModelCreating 方法移动到迁移 class 中的 Up 方法。有关详细信息,请参阅 this page。
型号class:
public class Model
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
dbContext Class
public class AppDbContext : DbContext
{
public AppDbContext (DbContextOptions<AppDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Model>().HasData(
new Model {Name = "William"},
new Model { Name="Altaf"}
);
}
public DbSet<DataSeedingEntityFramework.Model> Model { get; set; }
}
迁移 dbcontext 时出现此错误:
无法添加实体类型 'Model' 的种子实体,因为 属性 'Id' 需要非零值。考虑提供负值以避免与非种子数据发生冲突。
我知道为什么会显示此错误,但我想在没有 Id 值的情况下进行迁移。应该是自增。
你应该添加
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
这将告诉 EF Core 该实体具有自动增量字段 ID。 要在迁移中启用数据种子,请将代码从 DbContext class 中的 OnModelCreating 方法移动到迁移 class 中的 Up 方法。有关详细信息,请参阅 this page。