使用 Entity Framework 将大量数据从旧数据库移动到新数据库 5
Move large amount of data from old database to new database using Entity Framework 5
我正在创建一个应用程序以将数据从旧数据库移动到新数据库(不同架构)。我正在使用 Visual Studio 2013
、C#
、Entity Framework 5
、Microsoft 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:
- 只有 1 行说 线程退出,代码为 0。
- 在那之后,有很多行说 thread exited with code
259.
非常感谢您的帮助。
我认为这与 DbContext 的增长有关。
您可以利用以下帖子:
- Fastest Way of Inserting in Entity Framework
- Improving bulk insert performance in Entity framework
基本上你必须插入例如 100 行的部分,并重置(再次设置,即:_context = new SomeContext();
)每个插入之间的上下文。
我正在创建一个应用程序以将数据从旧数据库移动到新数据库(不同架构)。我正在使用 Visual Studio 2013
、C#
、Entity Framework 5
、Microsoft 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:
- 只有 1 行说 线程退出,代码为 0。
- 在那之后,有很多行说 thread exited with code 259.
非常感谢您的帮助。
我认为这与 DbContext 的增长有关。
您可以利用以下帖子:
- Fastest Way of Inserting in Entity Framework
- Improving bulk insert performance in Entity framework
基本上你必须插入例如 100 行的部分,并重置(再次设置,即:_context = new SomeContext();
)每个插入之间的上下文。