У меня есть одно приложение, которое взаимодействует с отдельными базами данных через два отдельных UnitOfWork
класса.Я использую StructureMap
для создания своих классов.По отдельности каждый из них создает и работает правильно.
Однако, как только я использую оба реестра контейнеров в моем " Веб-приложении ", я получаю конфликты.Оба реестра ссылаются на один и тот же DbContext
(базовый) класс из их общей структуры.Однако каждый реестр имеет свой конкретный класс DbContext
(который наследуется от DbContext
).
Проблема в том, что ...
- В тот момент, когда я использую оба реестра, последний в "победах" ... и неправильный БЕТОН *Применяется класс 1018 *
Dbcontext
(в первый реестр). - Несколько экземпляров
DbContext
применяются к хранилищу ссылок.
Q: Как я могу гарантировать, что правильный CONBETE DbContext будет применен ко всему моему реестру? Q: Как я могу обеспечить ЕДИНСТВЕННУЮ ИНСТАНЦИЮ DbContext в моем реестре?
Я пробовал разные методы, но безуспешно ... спасибо за помощь.
Например ...
РЕГИСТРАЦИЯ "ОДИН" СОДЕРЖИТ:
For<DbContext>().Use<BBLDataContext>();
For<IUnitOfWork>().Use<BBLUnitOfWork>();
For(typeof(ICompositeRepository<>)).Use(typeof(DbRepository<>)).Ctor<DbContext>().Is<BBLDataContext>();
For(typeof(IRepository<>)).Use(typeof(DbRepository<>)).Ctor<DbContext>().Is<BBLDataContext>();
РЕГИСТРАЦИЯ «ДВА» СОДЕРЖИТ:
For<DbContext>().Use<WsDataContext>();
For<IUnitOfWork>().Use<WsUnitOfWork>();
For(typeof(ICompositeRepository<>)).Use(typeof(DbRepository<>)).Ctor<DbContext>().Is<WsDataContext>();
For(typeof(IRepository<>)).Use(typeof(DbRepository<>)).Ctor<DbContext>().Is<WsDataContext>();