我正在为具有 Id(身份)列的实体调用 HasData 方法(见下文),但迁移首次运行时没有数据插入到表中。
当 TestObject 模型未使用 Id(身份)列作为主键时,首次运行迁移时会按预期插入数据。
EF Core 是否能够为 Identity 列插入数据?
modelBuilder.Entity<TestObject>().HasData(
new TestObject
{
Id = 1,
TestValue = "Test 1"
}
如果数据库中的 PK 列是身份列(由数据库服务器创建),则无法插入值。它是由数据库生成的。
正如下面的评论所指出的,EF Core 在执行 HasData() 时将调用“SET IDENTITY INSERT ON”。
https://www.learnentityframeworkcore.com/configuration/ Fluent-api/hasdata-method
功能开始按预期运行。不确定原因或解决方案,只是在数据项目中进行了更改,重构了一两个类,正常清理/重建,经过几个周期后,我开始在更新数据库时在数据库中获取数据。
@Paul Carlton 的评论通常是对此的正确答案。添加 HasData 方法后,您需要运行 add-migration,这又会生成包含所有 InsertData() 语句的迁移到模型。
然后,您可以按照@Lei Yangs 评论中提到的方式运行 update-database,以填充数据库中的数据。