Как удалить дочерние объекты перед родительскими с помощью Entity Framework CF?

) Я пытаюсь использовать EF code-first для удаления записи БД ( deleteMe) и ее дочерних элементов ( deleteMe.Prices .

foreach (var deleteMe in deleteThese)
{ 
   // Delete validation
   if(CanDeleteItem(deleteMe.ItemId))
   {
      db.Entry(deleteMe).State = EntityState.Deleted;

      foreach (var item in deleteMe.Prices)
      {
         db.Entry(item).State = EntityState.Deleted; // cascade delete
      }
   }
}
db.SaveChanges();

Однако Entity Framework, похоже, не может отследить тот факт, что дочерние записи должны быть удалены раньше родительских. Я получаю сообщение об ошибке:

Оператор DELETE конфликтует с ограничением REFERENCE "ItemPrice_Item"
Конфликт произошел в базе данных "DEVDB", таблице "dbo.ItemPrices", столбец 'Item_ItemId'.
Заявление было прекращено.

Как мне выполнить это удаление в EF?

23
задан quakkels 8 March 2012 в 15:50
поделиться