Во-первых, у меня есть фабрика dbcontext, которая определена public class DatabaseFactory : Disposable, IDatabaseFactory
, и она просто создает контекст, если он еще не существует.
Далее, у меня есть общий репозиторий, который определен public class Repository<T> : IRepository<T>
where T : class
, которыйпринимает фабрику в конструктор.У меня есть другие конкретные репозитории, которые наследуются от этого.
У меня также есть единица рабочего класса, которая определена public class UnitOfWork : IUnitOfWork
, которая принимает фабрику в конструкторе и сохраняет все изменения в контексте внутри фабрики (котораявсе репозитории должны использовать).
В моем контроллере у меня установлен конструктор public ProjectController(IDatabaseFactory factory, IUnitOfWork unitOfWork, IProjectRepository projectRep, IUserRepository userRep)
.
По сути, мне нужно, чтобы тот же экземпляр фабрики передавался единицеработа и все репозитории.С помощью ninject он создает новую фабрику для каждого объекта вместо передачи одного экземпляра им всем.Есть ли способ разрешить прохождение только одного экземпляра через нинжект или я неправильно создаю свою фабрику и / или неправильно понимаю нинъект?
Вот мои привязки в нинъекте:
kernel.Bind<IProjectRepository>().To<ProjectRepository>();
kernel.Bind<IIssueRepository>().To<IssueRepository>();
kernel.Bind<IUserRepository>().To<UserRepository>();
kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>();