【发布时间】:2015-04-14 23:57:54
【问题描述】:
我正在使用 ASP.NET MVC 和 EF 6,并且我有一个控制器,它调用我的服务层来执行一些操作。其中一项操作必须是异步的,以便控制器可以在该操作完成之前返回视图。看起来是这样的:
- 正在执行控制器操作。
- 调用服务。
- 服务执行一些将数据保存在数据库中的操作。
-
Services 启动一个新任务并将控制权返回给 Controller。
(Task.Factory.StartNew(() => X())
控制器调用另一个跟踪用户操作的服务。这个 是它失败的地方,因为我在 (4) 上开始的异步操作使用事务并且它们共享相同的 DbContext。
我应该如何处理?
编辑:
我得到一个异常,因为 DbContext 已被释放(控制器在执行 Action 后正在释放 DbContext。
我通过使用新的 DbContext 创建新服务来解决此问题,但这不是最佳解决方案。因此,我异步调用了一个方法,并在该方法中创建了一个由 using 语句包围的新 DbContext,以便在执行异步方法后将其释放。
【问题讨论】:
-
请发布您到目前为止所尝试的内容,简短而完整的问题重现会有所帮助。请解释一下这是失败的地方实际上是什么意思,例外?
-
我添加了额外的信息。
标签: asp.net-mvc entity-framework asynchronous async-await dbcontext