使用ServiceStack的Funq注册的EF DbContext在运行单元测试时被释放

3

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

container.DefaultReuse = ReuseScope.Request;

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

当运行单元测试(即不存在HTTP请求时),我会收到“DbContext已处理”异常。我认为这是因为在缺少HTTP请求的情况下,Funq立即处置了我的上下文。对吗?

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

1个回答

1

对不起,事实证明这不是Funq的问题,而是EF数据库迁移的问题:

显然,迁移逻辑会通过处理上下文来进行清理。我的问题是我使用了IDbContextFactory来向迁移提供上下文,并在其Create方法中返回由Funq容器解析的上下文实例。这就是为什么容器中的实例在迁移完成后被处理的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接