有什么方法可以在 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