Я пытаюсь использовать Unity IoC с единицей работы & моделей хранилищ, однако я изо всех сил, чтобы решить, как мой репозиторий будет получить его Nhibernate сессии выполнять свою работу ...инъекционное IUnitOfWork в IRepository конструктор
Ниже у меня есть мой IUnityContainer, который выполняет мои привязки IoC. Затем у меня есть репозиторий NHibernate, который должен быть предоставлен ISession, который должен быть предоставлен из подразделения работы NHibernate, но я теперь уверен, как я могу сказать Unity чтобы предоставить его в его конструкторе ..
Я сделал привязку для IUnitOfWork к Nhib ... один, но как передать это значение в IRedository RegisterType?
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
NHibernateHelper helper = new NHibernateHelper();
// register all your components with the container here
// e.g. container.RegisterType<ITestService, TestService>();
container.RegisterControllers();
container.RegisterType<IUnitOfWork, NHibernateUnitOfWork>(new HierarchicalLifetimeManager());
container.RegisterInstance<ISessionFactory>(helper.SessionFactory);
container.RegisterType<IRepository, NHibernateRepository>() ;
return container;
}
public class NHibernateRepository : IRepository
{
public NHibernateRepository(ISession session)
{
_session = session;
}
}
public class NHibernateUnitOfWork : IUnitOfWork
{
private readonly ISessionFactory _sessionFactory;
private readonly ITransaction _transaction;
public ISession Session { get; private set; }
public NHibernateUnitOfWork(ISessionFactory sessionFactory)
{
_sessionFactory = sessionFactory;
Session = _sessionFactory.OpenSession();
Session.FlushMode = FlushMode.Auto;
_transaction = Session.BeginTransaction(IsolationLevel.ReadCommitted);
}
}
Посмотрев на это - это так много –
Я не знаком с фразой 'Cock on', я надеюсь, что вы означает Rock on, и вам будет приятно :) – Lukazoid
Это может быть сланговый термин на Северном английском (Йоркшире)! –