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