Я использую Entity Framework с .NET 4.0 и SQL Server 2008.
У меня есть две сущности A
и B
, A
имеет много B
(есть a
поле в таблице B
, т.е. B
-> много к одному -> A
).Когда я пытаюсь удалить конкретную родительскую сущность A
, запрос не выполняется
A - родительская сущность, B - дочерняя сущность.
Вот код, который я использую дляудаление конкретного объекта A
: -
var obj = (from A in context.As where A.id=someValue select A).First();
context.As.DeleteObject(obj);
context.SaveChanges();
Однако оно выдает известное исключение
Оператор DELETE конфликтует с ограничением REFERENCE "FK_bs_as".Конфликт произошел в базе данных «myDb», таблице «dbo.bs», столбце «a».
Оператор был прерван.
Затем я посмотрел на ограничение внешнего ключаиспользуя SQL Server Management Studio и отредактировал FK следующим образом:
- правило удаления: каскад
- правило обновления: каскад
- принудительное ограничение внешнего ключа: нет
и попытался установить FK на ON DELETE CASCADE
.Однако очевидно, что с этим все еще есть проблема.
Я не хочу получать каждую чертову дочернюю сущность (B
) родительской сущности (A
) и удалять их по отдельности.Это слишком дорого по сравнению с выполнением одного запроса SQL.