Я пытаюсь сначала использовать EF-код, чтобы удалить запись db (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", column 'Item_ItemId'.
Заявление завершено.
Как выполнить это удаление в EF?