Entity Framework удаление ненулевых строк с внешним ключом - PullRequest
0 голосов
/ 04 февраля 2010

У меня есть схема, похожая на стандартную настройку Product / OrderDetails / Order. Я хочу удалить один продукт, а каскадным образом удалить все детали заказа, которые ссылаются на этот продукт.

Если предположить, что я продумал это с точки зрения бизнес-правил, какой самый элегантный способ справиться с этим с помощью Entity Framework 4?

1 Ответ

1 голос
/ 04 февраля 2010

Первым делом первым:

Есть ли причина, по которой on delete cascade на уровне базы данных не будет работать?

Если это действительно невозможно, вы можете попробовать следующее:

Поскольку ObjectContext не имеет метода стиля DeleteAll ... вы всегда можете реализовать свой собственный:

public static void DeleteAll(this ObjectContext context, 
    IEnumerable<Object> records)
{
    foreach(Object record in records)
    {
        context.DeleteObject(record);
    }
}

Тогда вы могли бы написать что-то вроде (возможно, в репозитории):

context.DeleteAll(context.OrderDetails.Where(od => od.Product == product));

Или, чтобы быть немного чище:

var toDelete = context.OrderDetails.Where(od => od.Product == product);

context.DeleteAll(toDelete);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...