Использование LINQ для автоматического удаления дочерних записей - PullRequest
1 голос
/ 28 мая 2009

Я немного новичок в LINQ и у меня есть быстрый вопрос относительно удаления.

Скажем, например, у меня есть 2 таблицы, Orders и OrderItems. Используя LINQ, я легко могу создать новую дочернюю запись, используя

order.Items.Add(new OrderItem());

, и это создаст дочернюю запись в базе данных и обновит ее внешний ключ до orderId. Это здорово, мне это нравится! Однако, когда я хочу удалить дочернюю запись

order.Items.Remove(orderItem);

Я получаю сообщение об ошибке при суммировании изменений (поскольку на самом деле это не удаление дочерней строки (элемента заказа), а просто удаление внешнего keyId) Можно ли сделать это так, как я хотел бы? Я не хочу создавать целую кучу репозиториев и, если нужно, удалить все дочерние строки для большой базы данных.

Заранее спасибо.

E

Ответы [ 2 ]

2 голосов
/ 28 мая 2009

Установите ON DELETE CASCADE для рассматриваемой таблицы, которая позволит SQL Server обрабатывать это для вас.

2 голосов
/ 28 мая 2009

Этого можно добиться в самой БД, настроив отношение внешнего ключа для удаления дочерних записей при удалении родительского ключа.

Обратите внимание, что это прозрачно для Linq2SQL, и он не будет об этом знать, поэтому лучше убедиться, что после этого вы не будете хранить текстовые данные, поскольку объекты OrderItem все еще будут присутствовать.

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