Я работаю в компании, где проект был внесен в компанию, потому что задачи внешней команды по созданию системы не сделали большой работы и, таким образом, были уволены.
У меня есть проблема в том, что у нас есть существующая база данных, в которой некоторые таблицы, в которых исходные данные должны были быть выполнены с помощью migrationBuilder
, выглядят только что вставленными с помощью сценариев SSMS \ SQL Server Insert.
в результате я получаю такую ошибку при добавлении сценариев заполнения, так что когда мы запускаем новую версию базы данных, это работает, но в существующей среде, такой как dev, test и staging, нет.
Нарушение ограничения PRIMARY KEY 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 проверить, существуют ли данные до их вставки?