У меня есть две связанные таблицы базы данных, которые в упрощенной форме выглядят так:
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() перед добавлением).
В чем причина этого поведения и как его исправить или обмануть?
Спасибо.