2011-01-06 21 views
1

因此,我们有一个服务,它通过WCF服务获取更新列表,然后将其写入数据库。其中一些可能会失败(每次查询1000次更新/插入),如果它们这样做,则需要写入其余的插入/更新,并且稍后将记录以供处理...使用LINQ to SQL批量插入允许一些故障

问题是如何在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(),是否有更好的方法来执行此操作?

回答

0

我最终提交了每一行的写法,并捕获任何错误。这样,我可以捕获失败,但正确插入其余部分。它不像我想的那么慢,但不是理想的......不介意你,因为这是一个完成“离线”(后端处理)的过程,它适用于我们所需要的。