Я работал над миграцией базы данных с Access db -> Azure SQL server.Я воссоздал все от OleDbCommand
до SqlCommand
.Например ...
private bool WriteCustomerComment(int customerID, string comment)
{
var sqlQuery = "INSERT INTO CustomerComment (CustomerID, Comment) VALUES (?, ?)";
var parameters = new object[]
{
customerID, comment
};
return ExecuteNonQuery(sqlQuery, parameters);
}
Стало ...
private bool WriteCustomerComment(int customerID, string comment)
{
var parameterList = new List<SqlParameter>();
var sqlQuery = "INSERT INTO CustomerComment (CustomerID, Comment) VALUES (@customerId, @comment)";
parameterList.Add(new SqlParameter("@customerId", customerID));
parameterList.Add(new SqlParameter("@comment", comment));
return ExecuteNonQuery(sqlQuery, parameterList);
}
Сейчас.Все программы работали просто отлично, но затем я попытался выполнить миграцию с помощью «Помощника по миграции на SQL Server» (от Microsoft, созданного для управления доступом к миграциям SQL).Поскольку при миграции со встроенной «Microsoft SQL Server Management Studio» не было передано
* Первичные ключи
* Внешние ключи
* Привязки таблиц
* Ограничения и т.д ..
Когда я сделал это, он перенес все вышеперечисленное.Однако, у программы начались проблемы, когда я попробовал это снова.Когда я вводил значения в обязательные поля, он вместо этого давал мне следующее ...
The INSERT Statement conflicted with the Foreign Key constraint "Sample$CustomerSample". Table dbo.Customer, Column "CustomerID".
Это сообщение об ошибке отличалось в зависимости от того, какой тип теста я создавал.Заявление также может быть:
The UPDATE statement conflicted with the Foreign Key constraint.....
Теперь я попытался получить некоторую информацию в Интернете, но я действительно не знаю, как решить эту проблему.Будет ли это какой-то сценарий / изменение в рассматриваемых таблицах?Или это проблема миграции?То, что я обнаружил, говорит мне, что ключи и т. Д. Должны вести себя одинаково как в Access, так и в SQL?
Вот изображение таблицы Customer.