c# - 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" }
);
});
解决方案
我和一个朋友谈过这个问题,他能够找出原因。基本上,如果您使用HasData
在您的表上插入数据,您必须提供密钥。这是一个要求。
这是微软的解释,数据播种 - 模型种子数据的限制
所以这回答了我的问题。我现在需要做的是专门添加Id值。
推荐阅读
- react-native - 有什么方法可以在 React Native 中使用 ref 获取 TextInput 的文本值?
- javascript - 在 Firefox 中延迟加载输入数据列表
- c# - 在 Visual Studio 2017 中进行远程调试时,调试未达到断点
- android - 基于谷歌账号的用户状态管理
- python - SQLAlchemy 和 sql 'Use Database' 命令
- ios - xcode 与 JIRA 集成以自动报告崩溃
- mysql - MySQL插入类别行
- c# - 获取类库中的环境变量(.NET Core 控制台应用)
- php - 如何在php中使用like子句过滤选择输入
- java - Hibernate 默认命名 @Column 与 postgres