我在一家内部已经实施了项目的公司工作,因为构建系统的外部团队任务做得不好,因此被解雇了。
我遇到的一个问题是,我们有一个现有的数据库,其中一些应通过migrationBuilder
完成种子数据的表似乎已通过SSMS \ SQL Server插入脚本插入。
结果是,在添加种子脚本时出现了这样的错误,因此,当我们启动数据库的一个新的实例时,它可以工作,但是在现有的环境(例如dev,test和暂存)上却不行。
违反主键约束'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检查数据是否存在?
您可以编写自定义SQL和内容并将其添加到您的迁移脚本中;
https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/operations