我正在创建一个应用程序来将数据从旧数据库移动到新数据库(不同的模式)。我正在使用Visual Studio 2013
,C#
,Entity Framework 5
,Microsoft 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秒。但它变得越来越慢。然后,到达2000年需要1分钟以上。
我的问题是:
还有一个信息:正如我在Output
窗口中观察到的那样:
非常感谢你的帮助。
答案 0 :(得分:1)
我认为这与DbContext的增长有关。
您可以利用以下帖子:
基本上你必须插入100行的部分,然后重置(再次设置,即:_context = new SomeContext();
)每个插入之间的上下文。