【发布时间】:2020-12-21 12:35:19
【问题描述】:
我正在为具有 Id (Identity) 列的实体调用 HasData 方法(见下文),但在第一次运行迁移时没有数据插入到表中。
当 TestObject 模型没有使用 Id(身份)列作为主键时,数据在第一次运行迁移时按预期插入。
EF Core 是否能够为标识列插入数据?
modelBuilder.Entity<TestObject>().HasData(
new TestObject
{
Id = 1,
TestValue = "Test 1"
}
【问题讨论】:
-
嗯,
HasData需要提供 PK 值,因此它应该(应该)使用自动生成的(身份和类似的)密钥。您使用的是什么 EF Core 版本?以及哪个数据库提供商? -
@IvanStoev 同意,我认为这应该也能正常工作,因为 HasData 需要键值。我正在使用 EF Core 3.1.10 和 SqlServer 提供程序。
-
奇怪。您可以在干净的新数据库上尝试
Update-Database -Verbose并发布输出吗?希望您没有使用类似于context.Database.EnsureCreated();的代码,因为它破坏了迁移系统。 -
有趣的是......它开始工作了。不知道为什么,我在我的数据项目中做了一些小的重构,做了一些其他的小改动,清理/重建等,然后开始获取数据。但是,我真的很感谢你在这个问题上投入的时间,对不起,你不得不花时间在上面! @IvanStoev
-
您是否创建了新的迁移?这些文章没有说明使用此方法后,您必须创建一个新的迁移,然后在该迁移中您将看到 migrationBuilder 使用您指定的数据直接调用
InsertData。
标签: entity-framework-core entity-framework-migrations