我正在开发一个使用 ServiceStack 和 EF 的 ASP.NET MVC 网络应用程序。在我的 AppHost 中,我将 Funq 配置为默认请求重用范围:
container.DefaultReuse = ReuseScope.Request;
然后我注册我的 EF 上下文。
运行单元测试时(即不存在 HTTP 请求时)我得到“DbContext disposed”异常。我认为这是因为在没有 HTTP 请求的情况下,Funq 立即处理了我的上下文。对吧?
我以前有使用支持混合重用的 StructureMap 的经验(即,如果存在 HTTP 上下文,则按请求或按线程),那么我如何配置 Func 为我做同样的事情?
最佳答案
我的错!原来这不是 Funq 的问题,而是 EF 数据库迁移的问题:
显然,迁移逻辑通过处理上下文自行清理。我的问题是我使用 IDbContextFactory
为迁移提供上下文,并且在它的 Create
方法中我返回了由 Funq 容器解析的上下文实例。这就是容器中的实例在迁移完成后最终被处置的方式。
关于asp.net-mvc - 运行单元测试时,使用 ServiceStack 的 Funq 注册的 EF DbContext 被释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17326586/