团结决心与两个不同的LifetimeManagers?

时间:2013-06-11 16:49:49

标签: c# entity-framework unity-container

这个应用程序存在,可能有一些不太理想的设计决策,我们不能改变......所以这里。

在我们的Unity初始化程序中,注册了以下内容

container.RegisterType<DbContext, MyContext>(new HierarchicalLifetimeManager());

这就是整个应用程序获取其上下文的方式。但是,对于为一个部分编写的多线程代码,这会打破它。将其更改为此可以修复它,但会导致应用程序的其余部分不可靠。

container.RegisterType<DbContext, MyContext>(new PerThreadLifetimeManager());

多线程代码使用命令运行,它们是使用CommandFactory创建的,它创建了一个子容器。

_container = container.CreateChildContainer();

然后这个函数解析命令,注入一个新的上下文,因为它是在一个新线程上启动的:

    public T CreateCommand<T>() where T : IProcessCommandBase
    {
        return _container.Resolve<T>();
    }

我正在寻找一种方法来使用Lifetime管理器......一个用于应用程序的其余部分,另一个用于命令工厂。

想法?

0 个答案:

没有答案