Entity Framework 4 Удалить объект из коллекции объектов

У меня есть «Request» Entity с отношением 1 … * к объекту RequestProperty. Итак, в запросе есть коллекция объектов RequestProperty. Когда я обновляю «запрос», я хочу удалить все элементы в EntityCollection RequestProperty и добавить новые элементы из объекта входящего домена. Когда я Request.Properties коллекцию Request.Properties и вызываю удаление или объект DeleteObject в элементе, перечисление терпит неудачу, потому что коллекция была изменена.

На данный момент я делаю это:

 while (true) { if (newRequest.Properties.Count > 0) context.RequestPropertySet.DeleteObject(newRequest.Properties.First()); else break; } 

Поскольку это не очень «круто», я думал, что должен быть другой способ опорожнить коллекцию отношений. Спасибо за ваши мысли.

Ответ зависит от способа моделирования ваших объектов. Если вы используете общее независимое отношение или отношение внешнего ключа, вам придется использовать свой текущий подход – я использую его также и в своем проекте.

Если вы определили идентифицирующее отношение, вы сможете вызвать только Clear on collection, как описано в @Craig. Идентификация отношения – это особое отношение, где первичный ключ зависимого объекта содержит внешний ключ родительского объекта.

Пример модели EF

В примере показан объект Order и OrderItem с внешним ключом, идентифицирующим связь между ними. Первичный ключ OrderItem состоит из уникального Id и OrderId который является таблицей FK для Order . В этой конфигурации вам не нужно выполнять итерацию через OrderItem s и удалять каждый элемент отдельно. Простое удаление OrderItem из коллекции будет выполняться как удаление в базе данных, а очистка коллекции удалит все связанные OrderItem s в базе данных.

Используйте метод Clear() :

 newRequest.Properties.Clear(); 
  • Есть ли в Entity Framework 4 Code First поддержка генераторов идентификаторов, таких как NHibernate?
  • LEFT JOIN в LINQ для объектов?
  • Использование свойств DateTime в Code-First Entity Framework и SQL Server
  • EF Code First: Как я могу увидеть свойство EntityValidationErrors из консоли пакета nuget?
  • Entity Framework Code Только ошибка: модель, поддерживающая контекст, изменилась с момента создания базы данных
  • Использование Entity Framework с частной компактной установкой SQL Compact
  • Что такое независимые ассоциации и ассоциации с иностранными ключами?
  • Не удалось выполнить проверку для одного или нескольких объектов. Дополнительную информацию см. В разделе «Свойство EntityValidationErrors».
  • Как преобразовать DbSet в инфраструктуру Entity в ObjectQuery
  • EF4 Code First: как добавить отношения без добавления свойства навигации
  • Как реализовать Единицу работы, которая работает с EF и NHibernate
  • Давайте будем гением компьютера.