0

我正在加载对象列表,需要映射这些对象并将其存储回另一个数据库。这两个表没有相同的架构,因此需要映射。
例如:

using (var db1 = new Db1())
{
    var customers = db1.CustomersDb1;

    using (var db2 = new Db2())
    {
        foreach (var customer in customers)
        {
            var c = Mapper.Map<CustomerDb2>(customer);
            db2.customers.Add(c);
        }
        db2.SaveChanges();
    }
}

现在我用大约12000个条目测试了这段代码,它持续了2-3 分钟,直到我到达db2.SaveChanges()。所以在这段时间之后我什至没有存储任何东西。
中的Customer对象Db2只有 14 个属性,所以我不知道它在哪里需要这么多时间。

有没有更快的方法来映射和复制两个表Entity Framework

编辑:
循环中需要最多的时间。所以这不是数据库的问题。automapper如果我使用或手动映射它也没关系。

4

1 回答 1

0

不要使用EF。只使用一条 SQL 语句。

INSERT INTO Db1.Customers (ID, Value1, Value2)
SELECT NEWID(), Value1, Value2 FROM Db2.Customers

GO 
于 2013-11-13T13:15:28.137 回答