我正在加载一个对象列表,需要映射这些对象并将其存储回另一个数据库。这两个表没有相同的模式,因此需要映射 例如:
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
或者手动映射它也无所谓。
答案 0 :(得分:0)
不要使用EF。只使用一个SQL语句。
INSERT INTO Db1.Customers (ID, Value1, Value2)
SELECT NEWID(), Value1, Value2 FROM Db2.Customers
GO