powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / UnityContainer Contex is Disposed
5 сообщений из 5, страница 1 из 1
UnityContainer Contex is Disposed
    #39338285
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зарегистрировал в юнити контекс и фабрику
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
            container.RegisterType<IRightholderDbContext>(new InjectionFactory(c =>
            {
                var holder = container.Resolve<ICurrentRightholder>();
                var stateMachine = c.Resolve<RightholderStateMachineService>();
                return new RightholderDbContext(ConfigurationManager.ConnectionStrings["seccon"].ConnectionString, 
                    holder.Id, holder.OrganizationId, stateMachine);
            }));
            container.RegisterType<ICardRepositoryFactory>(new InjectionFactory(c =>
            {
                var holder = container.Resolve<ICurrentRightholder>();
                var stateMachine = c.Resolve<RightholderStateMachineService>();
                var context = c.Resolve<IRightholderDbContext>();
                return new RightholderCardRepositoryFactory(new Guid("8318a7c5-c783-4e0c-b9de-5272e233861c"),
                    () => context, holder, stateMachine);
            }));



При первом обращении все проходит хорошо, но при втором появляется ошибка, что контекст dispose.
В самом контексте реализовано так:
Код: c#
1.
2.
3.
4.
                        using (var context = _contextFactory())
			{
				return context.GetRegisterCard(id, includes);
			}



Подозрение, что _contextFactory() возвращает один и тот же контекст. Этот кусок кода менять нельзя.
Как настроить юнити, чтобы при вызове повторно метода контекст создавался новый, а не использовался старый?
...
Рейтинг: 0 / 0
UnityContainer Contex is Disposed
    #39338292
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное речь о context, ибо Contex - это марка презервативов
...
Рейтинг: 0 / 0
UnityContainer Contex is Disposed
    #39338293
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,

:-) Да, именно о нем
...
Рейтинг: 0 / 0
UnityContainer Contex is Disposed
    #39338294
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И да, если заново зарезолвить ICardRepositoryFactory, то все ок. Ну и понятно конечно.
Как настроить юнити тогда?
...
Рейтинг: 0 / 0
UnityContainer Contex is Disposed
    #39338532
Перегонщик перекупки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavluhaЗарегистрировал в юнити контекс и фабрику
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
            container.RegisterType<IRightholderDbContext>(new InjectionFactory(c =>
            {
                var holder = container.Resolve<ICurrentRightholder>();
                var stateMachine = c.Resolve<RightholderStateMachineService>();
                return new RightholderDbContext(ConfigurationManager.ConnectionStrings["seccon"].ConnectionString, 
                    holder.Id, holder.OrganizationId, stateMachine);
            }));
            container.RegisterType<ICardRepositoryFactory>(new InjectionFactory(c =>
            {
                var holder = container.Resolve<ICurrentRightholder>();
                var stateMachine = c.Resolve<RightholderStateMachineService>();
                var context = c.Resolve<IRightholderDbContext>();
                return new RightholderCardRepositoryFactory(new Guid("8318a7c5-c783-4e0c-b9de-5272e233861c"),
                    () => context, holder, stateMachine);
            }));



При первом обращении все проходит хорошо, но при втором появляется ошибка, что контекст dispose.
В самом контексте реализовано так:
Код: c#
1.
2.
3.
4.
                        using (var context = _contextFactory())
			{
				return context.GetRegisterCard(id, includes);
			}



Подозрение, что _contextFactory() возвращает один и тот же контекст. Этот кусок кода менять нельзя.
Как настроить юнити, чтобы при вызове повторно метода контекст создавался новый, а не использовался старый?

по умолчанию будет синглтон, попробуйте настроить на другой LifeTime
using (var context = _contextFactory()) - это как-то странно: руками вы его можете убить безотносительно LifeTime где угодно, пусть сам контейнер рулит LifeTime
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / UnityContainer Contex is Disposed
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]