Entity Framework 4 Удалить объект из коллекции объектов
У меня есть объект "Request" с отношением 1..* к объекту "RequestProperty". Итак, есть коллекция объектов RequestProperty в "Запросе". Когда я обновляю "Запрос", я хочу удалить все элементы в RequestProperty EntityCollection и добавить новые элементы из входящего объекта домена. Когда я перебираю Request.Properties
Сбор и вызов удалить или DeleteObject
для элемента перечисление не выполняется, так как коллекция была изменена.
На данный момент я делаю это:
while (true)
{
if (newRequest.Properties.Count > 0)
context.RequestPropertySet.DeleteObject(newRequest.Properties.First());
else
break;
}
Поскольку это не совсем "круто", я подумал, что должен быть другой способ очистить коллекцию отношений. Спасибо за ваши мысли.
2 ответа
Ответ зависит от того, как вы моделировали свои объекты. Если вы используете общее независимое отношение или отношение внешнего ключа, вам придется использовать свой текущий подход - я использую его также и в своем проекте.
Если вы определили идентификационные отношения, вы сможете просто позвонить Clear
на коллекции, как описано @Craig. Идентификационная связь - это особая связь, в которой первичный ключ зависимого объекта содержит внешний ключ родительского объекта.
Пример показывает Order
сущность и OrderItem
сущность с внешним ключом, идентифицирующая связь между ними. Первичный ключ OrderItem
состоит из уникальных Id
а также OrderId
который является ФК из Order
Таблица. С этой конфигурацией вам не нужно перебирать OrderItem
и удалить каждый элемент отдельно. Просто удаляя OrderItem
из коллекции будет выполнен как удаление в базе данных, а очистка коллекции удалит все связанные OrderItem
с в базе данных.