【问题标题】:DataContext clear delete changesetDataContext 清除删除变更集
【发布时间】:2014-06-11 15:53:32
【问题描述】:

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

【问题讨论】:

  • 我不确定它是否有效,但请尝试添加“继续;”在你的 catch 块中声明,所以它会在发生违规异常时处理下一项。

标签: c# linq datacontext


【解决方案1】:

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

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);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多