Entity Framework 的 AddObject 似乎导致了严重的性能问题,如何解决?
Entity Framework's AddObject seems to be causing significant performance issues, how to resolve?
我正在使用 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 性能问题的想法?不确定为什么会这样。
谢谢。
编辑1
在 Azure 中,我针对 SQL Azure(网络版)使用 Azure 网站(中型)。我的本地(开发)设置由同一台机器上 WIndows 7 上的 IIS 和 SQL Server 2008 SP2 组成。
我在向 MS SQL 服务器添加大量项目时遇到了类似的问题。我最终使用了 ExecuteSqlCommand,它快了很多。
但这只是将数据添加到数据库中,而不是添加到您的 EF 对象中——这在您的情况下可能是也可能不是问题。
http://msdn.microsoft.com/en-us/library/system.data.entity.database.executesqlcommand(v=vs.113).aspx
我正在使用 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 性能问题的想法?不确定为什么会这样。
谢谢。
编辑1
在 Azure 中,我针对 SQL Azure(网络版)使用 Azure 网站(中型)。我的本地(开发)设置由同一台机器上 WIndows 7 上的 IIS 和 SQL Server 2008 SP2 组成。
我在向 MS SQL 服务器添加大量项目时遇到了类似的问题。我最终使用了 ExecuteSqlCommand,它快了很多。
但这只是将数据添加到数据库中,而不是添加到您的 EF 对象中——这在您的情况下可能是也可能不是问题。
http://msdn.microsoft.com/en-us/library/system.data.entity.database.executesqlcommand(v=vs.113).aspx