0
我从网上数据使用类似于循环填充我的数据库(简化,没有错误检查)的想法:EF 4.1寻求如何加快加入行
foreach (var catalog in catalogs)
{
var result = Items(catalog, state, context);
while (result != null)
{
result.ForEach(r => context.DbContext.Items.Add(r));
context.DbContext.SaveChanges();
result = Items(catalog, state, context);
}
}
代码需要一些时间来获得XML来自服务器的响应并使用响应流上的XElement.Load将其解码为XElement。它被解码为包含最多50项的项目列表 - 这是我在每次循环传递中从服务器请求的内容。由于SaveChanges调用,该块会立即保存到表格中。
将循环时间的8/10花费在将项目添加到DbContext或SaveChanges调用上或两者上。与远程服务器进行通信并将响应XML解码为实体列表为2/10。
如何提高将数据存储到数据库的效率,同时仍然与EF保持同步?
我知道我可以从XML批量加载数据库,但是这会迫使我找出需要编写的SQL语句,因为几个相关的表使用上面的SaveChanges调用进行更新,因此我启动失去了使用EF的优势。
叹息。最初我期望从流构造XElement,然后从其XElement子项创建POCO对象列表将是瓶颈! – Tony 2012-03-07 15:41:18