我正在使用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组成。
答案 0 :(得分:1)
我在向MS SQL Server添加大量项目时遇到了类似的问题。我最终使用了ExecuteSqlCommand,速度要快得多 但这只是将数据添加到数据库而不是您的EF对象 - 在您的情况下可能会或可能不会出现问题。
http://msdn.microsoft.com/en-us/library/system.data.entity.database.executesqlcommand(v=vs.113).aspx