asp.net-mvc - 运行单元测试时,使用 ServiceStack 的 Funq 注册的 EF DbContext 被释放

标签 asp.net-mvc entity-framework servicestack dbcontext

我正在开发一个使用 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/

相关文章:

javascript - AJAX 请求完成后,如何调用 PartialView 中定义的 JavaScript 函数?

c# - 将网站和类库部署到 Azure

c# - 在 ASP.NET Core 2.0 中更新身份

c# - SOAPAction 和服务栈

c# - 与 SignalR 共享 ServiceStack ICacheClient

c# - 如何在 IIS 中使用 ServiceStack 浏览目录/文件?

jquery - 如何在 ASP.NET MVC 部分 View 中使用 JQuery tablesorter 插件?当我在 View 中插入 PartialView 时,我使用的是 ajax

c# - 在 asp.net-mvc 中创建可重用部分的最佳方法

entity-framework - Entity Framework : Modeling against an existing database scheme

c# - 如何对记录进行分组并仅检索具有前 N 条记录的第一组