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