Платформа единицы - многократное использование экземпляра

никто не любил моего первого вопроса об этом: Создание Платформы Объекта возражает с Единицей для Единицы шаблона Работы/Репозитория

таким образом, мне удалось перефразировать его к чему-то, что можно считать без отключения / потерю желания жить.

Я создаю объект, DataAccessLayer, который берет 2 интерфейса в конструкторе: IUnitOfWork и IRealtimeRepository:

public DataAccessLayer(IUnitOfWork unitOfWork,
                       IRealtimeRepository realTimeRepository)
{
    this.unitOfWork = unitOfWork;
    this.realTimeRepository = realTimeRepository;
}

Теперь, конструктор для реализации IRealtimeRepository также берет параметр IUnitOfWork:

public DemoRepository(IUnitOfWork unitOfWork)
{
    this.unitOfWork = unitOfWork;
}

В установке контейнера Единицы я затем добавляю эти две реализации:

container.RegisterType();
container.RegisterType();

то, что происходит, - то, что Единица создает 2 новых экземпляра IUnitOfWork (на самом деле контекст данных Платформы Объекта), один для конструктора DataAccessLayer, один для конструктора DemoRepository

Поскольку это для шаблона Единицы работы, довольно важно, чтобы тот же экземпляр был снова использован. Какие-либо идеи? Я вижу, что подобные вопросы задали прежде, но не приняли

6
задан Community 23 May 2017 в 12:07
поделиться

1 ответ

Вы можете сказать Unity использовать ContainerControlledLifetimeManager:

container.RegisterType<IUnitOfWork, communergyEntities>(new ContainerControlledLifetimeManager());

Альтернативно вы можете использовать RegisterInstance вместо RegisterType, хотя вы должны создать его во время регистрации:

container.RegisterInstance<IUnitOfWork>(new CommunergyEntities());
7
ответ дан 17 December 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: