1
我想將我的單元工作傳遞到我的通用基本存儲庫,但是當我嘗試調用unitofwork未傳遞到基本存儲庫的某些方法時。Structuremap構造函數注入工作單元始終爲空
這種情況:我將userRepository下面的代碼注入到我的UserController中一切正常,當它調用userRepository.Save(user)時,由於unitofwork爲null而失敗。我不知道爲什麼?
我使用nhibernate和結構圖。我正確地認爲香港專業教育學院有線一切了,但這裏是一些代碼來仔細檢查:
這是基礎資源庫:
public class BaseRepository<T> : IRepository<T> where T : IAggregateRoot
{
private readonly IUnitOfWork _unitOfWork;
public BaseRepository(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
public BaseRepository()
{}
public void Save(T Entity)
{
_unitOfWork.Session.Save(Entity);
}
}
特定的資源庫:
public class UserRepository : BaseRepository<User>, IUserRepository
{
}
這是我的NHibernate structuremap配置:
public NhibernateRegistry()
{
For<IUnitOfWork>().HybridHttpOrThreadLocalScoped().Use<UnitOfWork>();
For(typeof(IRepository<>)).Use(typeof(BaseRepository<>));
// Nhibernate Session
For<ISession>().HybridHttpOrThreadLocalScoped().Use(context => context.GetInstance<ISessionFactory>().OpenSession());
// Nhibernate SessionFactory
For<ISessionFactory>().Singleton().Use(NhibernateHelper.CreateSessionFactory());
}`
這是我的nhibernate http模塊:
public class NHibernateModule : IHttpModule
{
private IUnitOfWork _unitOfWork;
public void Init(HttpApplication context)
{
context.BeginRequest += ContextBeginRequest;
context.EndRequest += ContextEndRequest;
}
private void ContextBeginRequest(object sender, EventArgs e)
{
_unitOfWork = ObjectFactory.GetInstance<IUnitOfWork>();
}
private void ContextEndRequest(object sender, EventArgs e)
{
try { _unitOfWork.Commit(); }
catch { _unitOfWork.Rollback(); }
finally { Dispose(); }
}
public void Dispose()
{
if (_unitOfWork != null)
_unitOfWork.Dispose();
}
}
不能相信我錯過了!是的你的權利,我需要從基地庫使用基地:(單位工作)! – gdp 2011-05-15 13:34:30