如何使用线程池和实体框架处理数据库操作?

时间:2010-10-28 08:59:01

标签: c# entity-framework threadpool

我真的需要一些代码示例......我想做的是:

GetCollectionFromDatabase
foreach item
{
    resetEvents[i] = new ManualResetEvent(false);
    var makeRequest = new MakeRequest(resetEvents[i]);

    ThreadPool.QueueUserWorkItem(new WaitCallback(makeRequest.ThreadPoolCallback), i);
}
db.Save();

ThreadPoolCallback    
{
    update/delete the row 
}

这是正确的用法吗?我是否将数据库作为参考传递给ThreadPoolCallBack

1 个答案:

答案 0 :(得分:1)

您必须在线程池回调中创建上下文。实体框架上下文不是多线程的,不能由不同的线程共享。

我认为db是这种情况下的数据库上下文。您必须在ThreadPoolCallback中创建一个新的并将其保存在那里。