DataContext清除删除变更集

时间:2014-06-11 15:53:33

标签: c# linq datacontext

我的数据库中有一个表定期清理。我得到一个需要删除的项目列表,然后迭代它们从数据库中删除它们。问题是某些删除操作会违反外键约束。这很好,我只是想忽略这些项目并继续前进。问题是,一旦失败,它就会卡在数据上下文的删除队列中,我不能继续。根据我的研究,您似乎无法清除.NET 4中的删除队列。如何在删除失败后继续前进?

using (DataContext dc = new DataContext())
{
    List<Item> removedItems = dc.Items.Where(o => o.Removed).ToList();

    foreach (Item item in removedItems)
    {
        try
        {
            dc.Items.DeleteOnSubmit(item);
            dc.SubmitChanges();
        }
        catch { }
    }
}

1 个答案:

答案 0 :(得分:0)

我发现这种组合有效。我整天都在弄乱这个版本,这最终给了我所需要的东西。我想只是插入项目会否定删除。

using (DataContext dc = new DataContext())
{
    List<Item> removedItems = dc.Items.Where(o => o.Removed).ToList();

    foreach (Item item in removedItems)
    {
        try
        {
            dc.Items.DeleteOnSubmit(item);
            dc.SubmitChanges();
        }
        catch 
        { 
            dc.StatisticsSettings.InsertOnSubmit(item);
        }
    }
}