У меня есть таблица с именем Parent
, которая имеет отношение «многие ко многим» с таблицей с именем Child
. В модели EF Parent
- это сущность, которая имеет свойство с именем Child
типа ICollection<Child>
.
Я могу в программе сделать это, чтобы удалить все связанные элементы Child
, а затем повторно заполнить его:
Parent entity = context.Parent.FirstOrDefault(someCondition);
entity.Child.Clear(); // remove all related child elements (in database, only data in the associated table is removed)
entity.Child.Add(newChildEntity)
context.SaveChanges();
Однако что, если мне нужно удалить элементы Child
с помощью условия?
Я пробовал:
entity.Child.Where(otherCondition).Clear();
Но поскольку Where
метод возвращает IEnumerable<Child>
Я не могу использовать метод Clear ().
Другая попытка заключалась в приведении к ICollection<Child>
перед вызовом метода Clear
, но возникло исключение, сообщающее, что приведение невозможно .
Любая помощь, пожалуйста?
Возможно, я мог бы получить entity.Child.Where(otherCondition)
, а затем использовать ForEach l oop - Remove
для всех элементов, однако, помимо обеспечения очень плохой производительности, Я думаю, что таким образом удаляется и элемент Child
, а не только данные отношения.
Jaime