【发布时间】:2020-08-30 15:06:12
【问题描述】:
我在一家公司工作,其中一个项目已被引入内部,因为构建系统的外部团队任务没有做得很好,因此被解雇了。
我遇到的一个问题是我们有一个现有的数据库,其中一些应该通过migrationBuilder 完成种子数据的表看起来刚刚通过 SSMS\SQL Server 插入脚本插入。
因此,我在添加播种脚本时收到类似这样的错误,因此当我们启动数据库的新实例时,它可以工作,但在现有环境(如开发、测试和登台)上却不行。
违反主键约束“PK_xxxx”。无法在对象“forms.AnswerTypes”中插入重复键。重复键值为 (1)
我发现的唯一可能的方法是从这里的链接
但希望有更好的方法可以实现这一点,因为我无法在迁移过程中删除数据,因为它已被其他表使用并被其他表引用,因此连锁反应范围很广。
我试图播种的数据类型的一个例子是这样的;
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.InsertData(
schema: "forms",
table: "Rules",
columns: new[] { "RuleId", "Rules" },
values: new object[] { 1, "Any" });
migrationBuilder.InsertData(
schema: "forms",
table: "Rules",
columns: new[] { "RuleId", "Rules" },
values: new object[] { 2, "All" });
}
那么,问题是,migrationBuilder 是否可以在插入之前检查数据是否存在?
【问题讨论】:
标签: c# seeding ef-core-3.1