У меня есть объект с именем DocumentItem.У него есть естественный ключ, который состоит из двух столбцов: DocumentId (идентификатор документа) и Index (позиция элемента в документе).
Это естественный ключ, поэтому его иногда приходится менять.Entity Framework предотвращает изменения ключа.Однако мне удалось связать вставки / обновления / удаления с хранимыми процедурами.Они получают один дополнительный параметр - NexIndex, который становится новым индексом для DocumentItem при выполнении sproc.
Однако существует одна проблема: управление менеджером состояния объекта, чтобы он имел текущую и действительную информацию.Представьте себе такую ситуацию:
Документ с элементами документа:
1.2. 3. 4. 5.
Пользователь удаляет номер 3 и добавляет новую позицию (всегда в конце, пользователь не может изменить порядок элементов).
Список изменений: Удалить 3 (нормально) Обновить 4-> 3 (ок) Обновление 5 -> 4 (ок) Вставка 5 - это то место, где она ломается
Проблема в том, что Entity Framework не знает об изменениях индекса.Я пытался привязать индекс обратно из базы данных, но он всегда приводит к исключению «Невозможно определить действительный порядок операций ...».
Теперь ситуация такова: EF считает, что у него уже есть элементс индексом 5, поэтому последняя вставка прерывается.
Мне нужно что-то сделать, чтобы очистить состояние объекта обновленных элементов, чтобы я мог добавить новые, прикрепить или загрузить их из БД.Что я могу сделать?