Mat*_*rpe 8 c# sql-server parallel-processing entity-framework parallel.foreach
我正在使用Parallel.ForEach
多个线程进行工作,每次迭代都使用一个新的EF5 DbContext,所有这些都包含在TransactionScope中,如下所示:
using (var transaction = new TransactionScope())
{
int[] supplierIds;
using (var appContext = new AppContext())
{
supplierIds = appContext.Suppliers.Select(s => s.Id).ToArray();
}
Parallel.ForEach(
supplierIds,
supplierId =>
{
using (var appContext = new AppContext())
{
Do some work...
appContext.SaveChanges();
}
});
transaction.Complete();
}
Run Code Online (Sandbox Code Playgroud)
运行几分钟后,它会抛出一个EntityException"底层提供程序在Open上失败",其中包含以下内部细节:
"此时SQL Server数据库引擎的实例无法获取LOCK资源.当活动用户较少时,请重新运行语句.请数据库管理员检查此实例的锁定和内存配置,或检查长时间运行交易."
有谁知道导致这种情况的原因或如何预防?谢谢.
归档时间: |
|
查看次数: |
5437 次 |
最近记录: |