C# 无法使用DbContext,因为它是';正在处理

C# 无法使用DbContext,因为它是';正在处理,c#,asp.net-mvc,dependency-injection,unity-container,C#,Asp.net Mvc,Dependency Injection,Unity Container,首先,我已经搜索过了,但没有找到解决方案,因为我认为我的问题有点不同 我有一个UnitOfWork,我正在使用Unity依赖项注入来解析容器的实例 我有一个UnitOfWork,它实现了一个IUnitOfWork。 此UnitOfWork有3个不同的构造函数: public UnitOfWork() : this(new UnitOfSettings(HttpContext.Current.Request.Url.Host)) { } public UnitOfWork(DbConte

首先,我已经搜索过了,但没有找到解决方案,因为我认为我的问题有点不同

我有一个UnitOfWork,我正在使用Unity依赖项注入来解析容器的实例

我有一个UnitOfWork,它实现了一个IUnitOfWork。 此UnitOfWork有3个不同的构造函数:

public UnitOfWork()
    : this(new UnitOfSettings(HttpContext.Current.Request.Url.Host))
{
}

public UnitOfWork(DbContext settingsEntities)
    : this(new UnitOfSettings(settingsEntities, HttpContext.Current.Request.Url.Host))
{
}

public UnitOfWork(UnitOfSettings unitOfSettings)
{
    // Logic left out to made it clear.
}
另外,这个类有很多对象存储库。这里没有列出这些,因为我认为它们没有任何价值

现在,我有了注册接口的Unity:

public static void RegisterTypes(IUnityContainer container)
{
    container.RegisterType<IUnitOfWork, UnitOfWork>(new PerRequestLifetimeManager(), new InjectionConstructor(new SettingsEntities()));
}
公共静态无效注册表类型(IUnityContainer容器)
{
RegisterType(新PerRequestLifetimeManager(),新InjectionConstructor(新SettingSenties());
}
因为我用一个新的SettingSenties来解析我的IUnitOfWork,所以我也在容器中注册了SettingSenties。SettingSenties是一个DbContext(实体框架-模型优先)

但是,当我通过工作单元访问存储库时,仍然会收到错误消息:

“无法完成该操作,因为DbContext已被释放。”

我不知道这里发生了什么,因为我正在使用PerRequestLifetimeManager

错误发生在UnitOfWork的构造函数链接中。
可能是因为我正在构造一个新的UnitOfSettings,而不是通过依赖项注入器来解析它。这可能是原因吗?有没有一种优雅的方法来解决这个问题?

发布控制器代码。我更新了这个问题,因为失败的不是控制器操作,而是构造函数链接。@Complexity当你出现错误时调用了哪个特定的构造函数?
DbContext-settingsenties
在哪里实例化?我将回顾一下。这样做是因为必须通过Unity容器创建上下文。这是一个正确的假设吗?@Complexity
DbContext
不需要由
容器创建,但是我想知道在
DbContext
上还可以调用什么
Dispose()