首页 > 解决方案 > EF Core 数据播种(modelBuilder 上的 HasData 方法)不为 Identity 列插入数据

问题描述

我正在为具有 Id (Identity) 列的实体调用 HasData 方法(见下文),但在第一次运行迁移时没有数据插入到表中。

当 TestObject 模型没有使用 Id (Identity) 列作为主键时,在第一次运行迁移时会按预期插入数据。

EF Core 是否能够为标识列插入数据?

modelBuilder.Entity<TestObject>().HasData(
            new TestObject
            {
                Id = 1,
                TestValue = "Test 1"
            }

标签: entity-framework-coreentity-framework-migrations

解决方案


如果数据库中的 PK 列是标识列(由数据库服务器创建),则您无法插入值。它由数据库生成。

更新

正如下面评论中所指出的,EF Core 将在执行 HasData() 时调用“SET IDENTITY INSERT ON”。

https://www.learnentityframeworkcore.com/configuration/fluent-api/hasdata-method


推荐阅读