3

我正在开发一个使用 ServiceStack 和 EF 的 ASP.NET MVC Web 应用程序。在我的 AppHost 中,我将 Funq 配置为默认请求重用范围:

container.DefaultReuse = ReuseScope.Request;

然后我注册我的 EF 上下文。

运行单元测试时(即不存在 HTTP 请求时),我得到“已处理 DbContext”异常。我认为这是因为在没有 HTTP 请求的情况下,Funq 立即处理了我的上下文。正确的?

我以前使用过支持混合重用的 StructureMap(即,如果 HTTP 上下文存在则按请求或按线程),那么我将如何配置 Func 为我做同样的事情?

4

1 回答 1

1

我的错!原来这不是 Funq 的问题,而是 EF 数据库迁移的问题:

显然,迁移逻辑通过处理上下文自行清理。我的问题是我曾经IDbContextFactory为迁移提供上下文,并且在它的Create方法中我返回了由 Funq 的容器解析的上下文的实例。这就是容器中的实例在迁移完成后最终处置的方式。

于 2013-06-26T18:54:55.050 回答