C# DataContext清除删除变更集

C# DataContext清除删除变更集,c#,linq,datacontext,C#,Linq,Datacontext,我的数据库中有一个表正在定期清理。我得到了一个需要删除的项目列表,然后通过迭代将它们从数据库中删除。问题是,某些删除操作将违反外键约束。这很好,我只想忽略这些项目,继续前进。问题是一旦失败,它就会卡在数据上下文的删除队列中,我无法继续。根据我的研究,似乎你不能仅仅清除.NET4中的删除队列。删除失败后,我如何继续 using (DataContext dc = new DataContext()) { List<Item> removedItems = dc.Items.Wh

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

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 { }
    }
}
使用(DataContext dc=newdatacontext())
{
List removedItems=dc.Items.Where(o=>o.Removed.ToList();
foreach(removedItems中的项目)
{
尝试
{
dc.Items.DeleteOnSubmit(项目);
dc.提交更改();
}
捕获{}
}
}

我发现这种组合很有效。我一整天都在搞这些版本,这终于给了我所需要的。我想只要把项目插回去就可以取消删除

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);
        }
    }
}
使用(DataContext dc=newdatacontext())
{
List removedItems=dc.Items.Where(o=>o.Removed.ToList();
foreach(removedItems中的项目)
{
尝试
{
dc.Items.DeleteOnSubmit(项目);
dc.提交更改();
}
接住
{ 
dc.统计设置。InsertOnSubmit(项目);
}
}
}

我不确定它是否有效,但请尝试在catch块中添加“continue;”语句,以便在发生违规异常时处理下一项。