簡體   English   中英

使用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 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秒。 但是隨着它的發展,它變得越來越慢。 然后,需要超過1分鍾才能達到2000。

我的問題是:

  • 為什么它運行的越來越慢?
  • 有沒有更好的方法可以傳輸大量數據呢?

更多信息:正如我在“ Output窗口中觀察到的:

  • 只有1行表示該線程以代碼0退出
  • 在那之后,有很多行說線程以代碼259退出

非常感謝你的幫助。

我認為這與DbContext的增長有關。

您可以利用以下職位:

基本上,您必須插入例如100行的部分,然后重置(再次設置,即_context = new SomeContext(); )每次插入之間的上下文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM