EF Core 数据播种(模型构建器上的 HasData 方法)不为 Identity 列插入数据

问题描述 投票:0回答:3

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

当 TestObject 模型未使用 Id(身份)列作为主键时,首次运行迁移时会按预期插入数据。

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

modelBuilder.Entity<TestObject>().HasData(
            new TestObject
            {
                Id = 1,
                TestValue = "Test 1"
            }
entity-framework-core entity-framework-migrations
3个回答
4
投票

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

更新

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

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


0
投票

功能开始按预期运行。不确定原因或解决方案,只是在数据项目中进行了更改,重构了一两个类,正常清理/重建,经过几个周期后,我开始在更新数据库时在数据库中获取数据。


0
投票

@Paul Carlton 的评论通常是对此的正确答案。添加 HasData 方法后,您需要运行 add-migration,这又会生成包含所有 InsertData() 语句的迁移到模型。

然后,您可以按照@Lei Yangs 评论中提到的方式运行 update-database,以填充数据库中的数据。

© www.soinside.com 2019 - 2024. All rights reserved.