c# - 使用linq将数据从一个表复制到另一个表的最快方法

标签 c# linq-to-sql

我在另一个 SQL 服务器上有一个表,我需要在一夜之间从中复制。目标表的结构非常相似,所以我只是打算使用类似下面的代码。 来源 - http://forums.asp.net/t/1322979.aspx/1

我还没有尝试过,但是在 linq 中有更好/更快的方法吗?

    //there exist two table list and listSecond
    DataClassesDataContext dataClass = new DataClassesDataContext(); //create the instance of the DataContext

    var str = from a in dataClass.lists select a;
    foreach (var val in str) // iterator the data from the list and insert them into the listSecond
    {
        listSecond ls = new listSecond();
        ls.ID = val.ID;
        ls.pid = val.pid;
        ls.url = val.url;
        dataClass.listSeconds.InsertOnSubmit(ls);

    }
    dataClass.SubmitChanges();
    Response.Write("success");

最佳答案

使用 LINQ 插入大量数据不是一个好主意,除非使用在复制之前需要大量转换的复杂架构。除了将它们全部记录在事务日志中之外,它将为插入的每一行创建一个单独的查询。

可以找到更快的解决方案 here - 它使用 SqlBulkCopy,这是一种在单个查询中插入大量数据的方法,没有事务日志记录来减慢速度。它的速度将一个数量级,我是根据这两种方法的个人经验告诉你的。

关于c# - 使用linq将数据从一个表复制到另一个表的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8940935/

相关文章:

c# - BeginForm 弄乱了 .NET 6 中的 Controller 路径值

c# - .net core 2.0 在 ubuntu 上运行控制台应用程序时出错

c# - 如何拆分大型 sql metal c# 实体文件

c# - Linq to SQL 搜索

c# - Expression.Call 重载之间的区别?

c# - 如何使用 ASP.NET Web API 处理 Javascript 后端的 JWT client_id

c# - 为什么使用只有静态方法的类?

c# - 这真的是您使用 Linq-To-Sql 的方式吗?

c# - LINQ 插入提交 : NullReferenceException

c# - 无法从任务列表中获取结果