임 새 기능이지만 구조 맵을 사용하여 nhibernate와 DI를 배우는 퀘스트에서 모든 것을 테스트하는 앱을 만들고 있습니다.내 UnitOfWork를 리포지토리 생성자에 삽입
내 기본 저장소에 단위 작업을 주입하는 데 문제가 있습니다. 모든 요청에 대해 단위 작업을 작성한 다음 끝에 커밋하거나 롤백합니다. 하지만 내 기본 저장소에 주입하려고 할 때 항상 내 메서드에서 사용하려고 할 때 null입니다. 더 구체적으로 내가이 오류 : "개체 참조가 개체의 인스턴스로 설정되지 않습니다". 어떤 아이디어가 잘못하고 무엇이 올바른 경로라면 나 가야합니까?
미리 감사드립니다.
자료 저장소 :
public abstract class Repository<T> : IRepository<T>
{
public readonly IUnitOfWork _unitOfWork;
public Repository(IUnitOfWork UnitOfWork)
{
UnitOfWork = _unitOfWork;
}
public Repository() {}
public void Save(T obj)
{
_unitOfWork.CurrentSession.Save(obj);
}
}
StructureMap 레지스트리가 내 위해 Application_Start 설정 이잖아 :
public class NHibernateRegistry : Registry
{
public NHibernateRegistry()
{
For<IUnitOfWork>().HybridHttpOrThreadLocalScoped().Use<UnitOfWork>();
For<ISession>().HybridHttpOrThreadLocalScoped().Use(context => context.GetInstance<ISessionFactory>().OpenSession());
For<ISessionFactory>().Singleton().Use(NHibernateSessionFactory.GetSessionFactory());
}
}
업데이트 :
baserepository 특정 repositorys 상속 즉 ArticleRepository 다음에 그 주입 메신저 내 application_start에 aspx 페이지. 그런 다음 내 aspx 페이지는 buildUp이 수행되는 기본 페이지를 상속받습니다. 그리고 나는이 같은 저장소에 액세스 :
public class Bootstrapper
{
public static void BootStrap()
{
ObjectFactory.Configure(x =>
{
x.AddRegistry<NHibernateRegistry>();
x.AddRegistry<WebRegistry>();
});
}
}
을 그리고 webregistry에 :
For<IArticleRepository>().Use<ArticleRepository>();
어떻게 저장소를 인스턴스화합니까? – mxmissile
@geepie thats 등록 방법, .aspx 페이지에서 IArticleRepository의 인스턴스를 "얻는"방법은 무엇입니까? – mxmissile
나는 그가 단지 var repository = ObjectFactory.GetInstance();를 수행하고 있다고 가정합니다. –
Phill