Это сложный вопрос для слова ... так что терпите меня.
У меня есть две таблицы в моей базе данных, [Item]
и [AssignedProperty]
.[AssignedProperty]
- это ребенок в отношениях родитель-ребенок с [Item]
.Так что в основном это просто поле ItemID и отношение внешнего ключа, использующее его.[AssignedProperty]
также имеет идентичные отношения с другой таблицей с именем [Property]
и собственным первичным ключом AssignedPropertyID.Это создает хорошие отношения многие ко многим.Однако у меня есть ограничение, которое диктует, что один [AssignedProperty]
не может иметь повторяющиеся вхождения ItemID и PropertyID в одной записи.Следовательно, [Item]
может иметь только по одному из каждого [Property]
.
. Это хорошо работает, но с LINQ-To-SQL возникает проблема в том, что я считаю порядком выполнения, конфликтующим с этим ограничением.
Чтобы вызвать эту ошибку, я загружаю [Item]
в свое приложение, используя LINQ-To-SQL.Затем я выбираю [AssignedProperty]
объект] из коллекции [AssignedProperties]
элемента и удаляю его.Затем я создаю новый объект [AssignedProperty]
с точно такими же ItemID и PropertyID, что и только что удаленный, и добавляю его обратно в коллекцию.Когда я вызываю [SubmitChanges]
в DataContext, он помечает меня в ограничении.Если старая запись [AssignedProperty]
была удалена первой, то нет причины, по которой новая запись должна вызывать эту ошибку.Похоже, что он пытается вставить новый [AssignedProperty]
перед удалением старого.
Как это исправить, и в базе данных, или в моем приложении?ТИА