我使用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。我怎么能这样做?