将类型标记为"脏"这样就可以创建一个新实例

时间:2015-09-09 13:09:12

标签: c# entity-framework unity-container

我使用Unity在我的代码中的许多地方注入DbContext。由于它是一个Web应用程序,我使用PerRequestLifeTimeManager。 但是,我有一种情况,我进行批量插入,需要经常重新创建DbContext。

情况如下:

public class TypeA
{
    public void Do()
    {
        TypeB variable = new TypeB();
        variable.EncapsulatedOperation();
    }
}

public class TypeB
{
    public void EncapsulatedOperation()
    {
        //Call unity behind the scene to resolve a service, resolving the DbContext with Unity
    }   
}

B类中的深度甚至可以变得更大,因为服务通常会实例化C类和D类的对象,它们自己调用其他使用Unity来解析DbContext的服务。

所以我正在做的是在TypeA中创建一个新的DbContext并将其注入到B类型的EncapsulatedOperation中,但显然它不可管理,因为已解析的服务仍然使用Unity解析的DbContext。我需要一些方法来告诉Unity创建一个DbContext的新实例。在应用程序的其余部分中,PerRequestLifeTimeManager很好,但在这种特殊情况下,我需要能够准确地告诉Unity何时需要创建新的instnace。我怎么能这样做?

0 个答案:

没有答案