我想使用統一的IoC與工作&庫模式的單元,但是我努力工作,我的倉庫將如何得到它的NHibernate的會議上進行它的工作...注漿IUnitOfWork到IRepository構造
下面我有我的IUnityContainer它做我的IoC綁定..然後我有我的NHibernate回購需要提供一個ISession,這應該從NHibernate的工作單位提供,但我現在肯定我如何可以告訴Unity在它的構造函數中提供它..
我已經將IUnitOfWork綁定到Nhib ...一個,但是如何在IRepository 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);
}
}
看過這個 - 它做得很好更多的意義!公雞!乾杯! – 2012-03-29 09:21:33
我不熟悉短語'公雞',我希望你意思是搖滾,不客氣:) – Lukazoid 2012-03-29 10:07:51
它可能是北英語(約克郡)的俚語! – 2012-03-29 11:36:10