我想使用统一的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