我对LINQ有点新,并且有一个关于删除的快速问题。
比如说,我有2个表,Orders和OrderItems。使用LINQ,我可以使用
轻松创建新的子记录order.Items.Add(new OrderItem());
这将在数据库中创建子记录并将其外键更新为orderId。这很棒,我喜欢它!但是,当我想删除子记录
时order.Items.Remove(orderItem);
我在汇总更改时遇到错误(因为它实际上没有删除子行(订单项),只是删除了外键ID)。是否有可能按照我想要的方式做到这一点?我不想创建一大堆存储库,如果要删除大型数据库的所有子行的梯子。
提前致谢。
电子
答案 0 :(得分:2)
您可以通过配置外键关系来删除父键的子记录,从而在数据库本身实现这一点。
请注意,这对Linq2SQL是透明的,并且它不会意识到它,因此最好确保在此之后不保留datacontexts,因为OrderItem对象仍然存在。
答案 1 :(得分:2)
为有问题的表设置ON DELETE CASCADE,让SQL Server为您处理此问题。