首页 > 解决方案 > EF Core Migration 和 PostgreSQL - 使用自动增量列出错

问题描述

为带有测试数据的 postgresql 添加迁移时出现以下错误。

如果我在 HasData 方法中指定 Id,则添加迁移正在工作。

无法添加实体类型“Employee”的种子实体,因为属性“Id”需要非零值。考虑提供一个负值以避免与非种子数据发生冲突。

员工模型

public class Employee
{
      [Key]
      public int Id { get; set; }

      public string Name { get; set; }
}

在 OnModelCreating 方法中

modelBuilder.HasPostgresExtension("uuid-ossp")
    .UseIdentityColumns();

modelBuilder.Entity<Employee>(e =>
{
    e.Property(p => p.Id).UseIdentityAlwaysColumn();
    e.HasData(
                new Employee { Name = "Name1" },
                new Employee { Name = "Name2" },
                new Employee { Name = "Name3" }
            );
});

标签: c#postgresqlentity-framework-coreentity-framework-core-migrations

解决方案


我和一个朋友谈过这个问题,他能够找出原因。基本上,如果您使用HasData在您的表上插入数据,您必须提供密钥。这是一个要求。

这是微软的解释,数据播种 - 模型种子数据的限制

所以这回答了我的问题。我现在需要做的是专门添加Id值。


推荐阅读