Первым делом первым:
Есть ли причина, по которой 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);