Привет! Я использую EF 4 для самостоятельного отслеживания. У меня есть три таблицы (анкета, раздел и страница) следующим образом:
Questionnaire
Id
Title
WhenClosedShowPageId
Section
Id
QuestionnaireId
Page
Id
SectionId
Так, чтобы в модели EF в Анкете были разделы, а в разделе - страницы. WhenClosedShowPageId - это пустое int, которое ссылается на страницу, отображаемую при закрытии анкеты. Все ссылки имеют ассоциации для сохранения ссылочной целостности.
Проблема возникает, когда я отмечаю все объекты как удаленные и пытаюсь сохранить. Если WhenClosedShowPageId был нулевым, когда я получил данные, тогда удаление работает нормально. Если для параметра WhenClosedShowPageId установлено значение, EF не может определить порядок удаления. Это понятно. Однако, если я устанавливаю WhenClosedShowPageId в null, помечаю сущности как удаленные и сохраняю, происходит то же самое. Я бы ожидал, что EF сначала сгенерирует оператор обновления, чтобы установить для параметра WhenClosedShowPageId значение null в базе данных, а затем удалить объекты.
Единственный способ обойти эту проблему - это сделать два независимых сохранения: первый для установки WhenClosedShowPageId на ноль, а второй для удаления сущностей. Это приложение с большими слоями, и я не хочу создавать специальный кейс только для этого.
Есть ли способ обойти это?
Даррен