在MVC/WebAPI环境中,我会使用InRequestScope
来绑定DbContext
。
然而,我现在在一个控制台应用程序/Windows服务/Azure工作角色中(不太重要,只是没有Web请求范围),它会周期性地创建多个异步运行的Tasks
。我希望每个任务都有自己的DbContext
,并且由于任务在自己的线程上运行,所以我尝试使用InThreadScope
来绑定DbContext
。
不幸的是,我发现当任务完成时,DbContext
没有被释放。实际上,线程返回到线程池后,当它被分配一个新的任务时,它已经有了一个DbContext
,因此DbContexts
会一直保持活动状态。
InThreadScope
是否可以在这里使用,或者我应该使用其他范围?当线程不断从线程池返回时,如何使用ThreadScope?
InNamedScope
)。但是,当你想在任务之外创建 DbContext 或者想在单个任务中有多个(连续的)DbContext 时,这种方法就不具备未来可扩展性了,等等。 - BatteryBackupUnit