Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server LINQ到SQL的大容量插入允许一些失败_Sql Server_Linq To Sql_Bulkinsert - Fatal编程技术网

Sql server LINQ到SQL的大容量插入允许一些失败

Sql server LINQ到SQL的大容量插入允许一些失败,sql-server,linq-to-sql,bulkinsert,Sql Server,Linq To Sql,Bulkinsert,因此,我们有一个服务,它通过WCF服务获取更新列表,然后将更新列表写入数据库。其中一些可能会失败(每个查询1000次更新/插入),如果失败,则需要编写其余的插入/更新,并且无法记录这些内容以供以后处理 问题是应该如何在LINQtoSQL中实现这一点。目前,我正在做如下工作: TestDataContext dc = new TestDataContext(); Random r = new Random(); for (int i = 0; i &

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

问题是应该如何在LINQtoSQL中实现这一点。目前,我正在做如下工作:

        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);
        }
TestDataContext dc=newtestdatacontext();
随机r=新随机();
对于(int i=0;i<300;i++)
{
Table Table=新表{randomNumber=r.Next(150)};
dc.表。InsertOnSubmit(表);
}
尝试
{
dc.提交更改();
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}

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

我最终提交了每一行,并捕获了所有错误。这样,我可以捕获失败的,但可以正确插入其余的。它不像我想象的那么慢,但并不理想。。。请注意,由于这是一个“离线”完成的过程(后端处理),它可以满足我们的需要