使用 Entity Framework 将大量数据从旧数据库移动到新数据库 5

Move large amount of data from old database to new database using Entity Framework 5

我正在创建一个应用程序以将数据从旧数据库移动到新数据库(不同架构)。我正在使用 Visual Studio 2013C#Entity Framework 5Microsoft SQL Server 2012。此 table、Customer 有超过 4 万条记录

private void TransferCustomer()
{
    int counter = 0;

    // Load all old customers
    var oldCustomers = _oldRockDale.customers;

    foreach (var oldCustomer in oldCustomers)
    {
        // Create new customer
        ...

        // Modify something
        ...

        // Add to collection
        <New_database_entity>.Customers.Add(newCustomer);

        // Insert to database for each 1000 records
        counter++;
        if (counter % 1000 == 0)
        {
            <New_database_entity>.SaveChanges();
        }
    }

    // Insert the rest to database
    <New_database_entity>.SaveChanges();
}

这是我的问题:这个函数 运行 越来越慢。对于前 1000 条记录,仅需 20 - 30 秒。但是它变得越来越慢。然后,到2000需要1分多钟

我的问题是:

更多信息:据我观察 Output window:

非常感谢您的帮助。

我认为这与 DbContext 的增长有关。

您可以利用以下帖子:

  • Fastest Way of Inserting in Entity Framework
  • Improving bulk insert performance in Entity framework

基本上你必须插入例如 100 行的部分,并重置(再次设置,即:_context = new SomeContext();)每个插入之间的上下文。