Как настроить AutoFac, чтобы каждый раз, когда я попадал на завод, я получал новый экземпляр Context
. Компонент Content
настроен на InstancePerLifetimeScope()
, что идеально подходит для 99% моего использования, но теперь мне нужно немного дополнительного контроля над тем, как компонент Context
находится в зоне действия.Переопределение конфигурации области AutoFac при использовании фабрики
class Program
{
static void Main(string[] args)
{
var builder = new ContainerBuilder();
builder.RegisterType<Box>();
builder.RegisterType<DbContext>().InstancePerLifetimeScope();
var container = builder.Build();
using (var scope = container.BeginLifetimeScope())
{
var x = scope.Resolve<Box>();
}
Console.ReadKey();
}
}
class Box
{
public Box(DbContext.Factory factory)
{
factory();
factory(); // Want this to generate a NEW instance
Console.WriteLine("Box: {0}", GetHashCode());
}
}
class DbContext
{
public delegate DbContext Factory();
public DbContext()
{
Console.WriteLine("Context: {0}", GetHashCode());
}
}
Очевидно, что это довольно упрощенный фрагмент кода. Проблема, которую я пытаюсь решить, заключается в том, что у меня огромный поток данных, поступающих в службу, и я пытаюсь сохранить пакет в базу данных. Итак, если Box
может создавать новые UOW по запросу и своевременно выпускать их для утилизации, тогда я получаю хорошее чистое решение.
Спасибо!
Да. Я пришел к тому же решению. Хороший. – MJM