почему Entity Framework Entity Master Подробности Entity Править - PullRequest
0 голосов
/ 26 июня 2011

Я работаю над проектом MVC, используя структуру сущностей с репозиторием и образцом единицы работы, Я пытаюсь редактировать коллекцию переменной длины в действии редактирования (основные данные), как пример в этом посте http://ivanz.com/2011/06/16/editing-variable-length-reorderable-collections-in-asp-net-mvc-part-1

Моя проблема заключается в том, что каждый раз при отправке формы для редактирования действия дочерней таблицы БД коллекции дублируют строки дочерней коллекции и устанавливают внешний ключ старых из них в значение null, а затем успешно изменяют главный объект. я проверяю, что состояние сущности главной сущности отключено (дочерняя коллекция также удалена).

У меня есть обходной путь, чтобы перебросить дочернюю коллекцию цикла и изменить ее состояние на измененное, добавленное или удаленное, но что мне нужно знать, как лучше всего решить эту проблему, чтобы автоматически обнаруживать изменения или не изменять состояние объекта на deatached.

Спасибо

1 Ответ

0 голосов
/ 26 июня 2011

Контекст EF не знает, какие изменения сделал ваш клиент, и у EF нет механизма, чтобы найти эти изменения. Есть только два подхода к этому сценарию:

  • Установите вручную состояние каждой сущности в графе объектов, как вы это знаете (это не обходной путь, это официальное решение ).
  • Сначала загрузите граф сущностей из базы данных и используйте TryUpdateModel, чтобы позволить MVC объединить для вас новое состояние и старое состояние, как описано здесь .
...