实体框架添加对象似乎导致了重大的性能问题,如何解决?

时间:2015-01-15 01:22:32

标签: entity-framework azure entity-framework-6

我正在使用EF6和POCO。我有一个性能问题,并在以下代码中将它定位到AddObject行。所有其他行都需要花费大量时间。使用本地数据库

var myOrderList = db.Order.Where(r => r.SupplierId== mySupplier.Id).OrderBy(r => r.Id).ToList(); //Local 5ms Azure 40ms.

foreach (Order myOrder in myOrderList)
{
   var myOrderItem = new OrderItem
   {
       OrderId = myOrder.Id,
       ProductId = product.Id
   };
   db.OrderItem.AddObject(myOrderItem); //Local 20ms Azure 300ms.
}

db.SaveChanges(); //Local 12ms Azure 40ms.

因此,AddObject似乎存在固有的性能问题,特别是暴露于Azure问题。

关于如何解决此AddObject性能问题的想法?不知道为什么会这样。

感谢。

EDIT1

在Azure中,我使用Azure网站(中)对抗SQL Azure(网络版)。我的本地(dev)设置由同一台机器上的WIndows 7上的IIS和SQL Server 2008 SP2组成。

1 个答案:

答案 0 :(得分:1)

我在向MS SQL Server添加大量项目时遇到了类似的问题。我最终使用了ExecuteSqlCommand,速度要快得多 但这只是将数据添加到数据库而不是您的EF对象 - 在您的情况下可能会或可能不会出现问题。

http://msdn.microsoft.com/en-us/library/system.data.entity.database.executesqlcommand(v=vs.113).aspx