使用LINQ to SQL批量插入允许一些失败

时间:2011-01-06 12:21:15

标签: sql-server linq-to-sql bulkinsert

因此,我们有一个服务,它通过WCF服务获取更新列表,然后将其写入数据库。其中一些可能会失败(每个查询1000次更新/插入),如果他们这样做,则要求写入其余的插入/更新,并且无法记录以便稍后处理......

问题是如何在LINQ to SQL中完成此操作。目前,我正在做类似的事情:

        TestDataContext dc = new TestDataContext();
        Random r = new Random();
        for (int i = 0; i < 300; i++)
        {
            Table table = new Table { randomNumber = r.Next(150) };
            dc.Tables.InsertOnSubmit(table);
        }
        try
        {
            dc.SubmitChanges();

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

在此示例中,Table.randomNumber是主键。在写入之前数据集中应该有重复项,但是当我调用dc.SubmitChanges()时,它会抛出异常...而不是在每次迭代后调用dc.SubmitChanges(),有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

我最后在编写每一行时提交了每一行,并发现任何错误。这样,我可以捕获失败,但正确插入其余部分。它并不像我一样慢,但并不理想......请注意,因为这是一个“脱机”(后端处理)的过程,它可以满足我们的需要。