原文http://www.codeproject.com/KB/cs/CascadingDeletes_cs.aspx

好像CodeProject这个家伙,和我一样走了弯路。在开始应用LINQ时,我对级联删除也和他一样,先取出主表,然后把从表再循环删除。借用下他的代码,我蓝得写了。

try
{
using (NWindDataContext dc = new NWindDataContext())
{
var q =
(from c in dc.GetTable<Customer>()
where c.CustomerID == "AAAAA"
select c).Single<Customer>();
foreach (Order ord in q.Orders)
{
dc.GetTable<Order>().DeleteOnSubmit(ord);
foreach (Order_Detail od in ord.Order_Details)
{
dc.GetTable<Order_Detail>().DeleteOnSubmit(od);
}
}
dc.GetTable<Customer>().DeleteOnSubmit(q);
dc.SubmitChanges();
}
UpdateDataGrid();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}


看似这样很合理,但是我们自聪明了,只需要简单的在数据库关联上设置级联就可以了。



 posted on 2008-07-16 23:20  天 天  阅读(359)  评论(2编辑  收藏  举报