У меня есть 2 связанные таблицы базы данных, которые в упрощенном виде выглядят так:
Product(
product_id,
name
)
ProductSpecs(
spec_id,
product_id,
name,
value
)
Внешний ключ задается через поле product_id, а таблица ProductSpecs имеет уникальное ограничение для пары (product_id, name).
Теперь в моем приложении ASP.NET MVC, когда пользователь редактирует спецификации продукта и сохраняет данные, я удаляю старые спецификации и вставляю все как новые.
Я делаю это, сначала вызывая DataContext.DeleteAllOnSubmit () и предоставляя текущие (старые) ProductSpecs в качестве параметра, а затем добавляю новые спецификации в коллекцию Product.ProductSpecs.
Затем я вызываю DataContext.SubmitChanges () и получаю ошибку, что мое уникальное ограничение было нарушено.
Глядя на операторы SQL, возвращаемые DataContenxt.GetChangeText (), я могу видеть, что INSERT выполняются перед DELETE (даже если я вызывал DeleteAllOnSubmit () перед Add).
В чем причина такого поведения и как его исправить или обойти?
Спасибо.