여러 NHibernate 세션 팩토리를 사용해야하는 MVC 4 애플리케이션을 작성하고 있습니다. AutoFac과 함께이 개체를 이름으로 등록합니다. 내 global.asax있는 모든 세션 팩터 리를 검색하고이를 CurrentSessionContext에 바인드/바인드 해제해야합니다.특정 유형의 모든 AutoFac 구성 요소를 검색하는 방법은 무엇입니까?
protected void Application_BeginRequest(object sender, EventArgs e)
{
foreach (ISessionFactory sessionFactory in SessionFactories)
{
if (!CurrentSessionContext.HasBind(sessionFactory))
{
CurrentSessionContext.Bind(sessionFactory.OpenSession());
}
}
}
protected void Application_EndRequest(object sender, EventArgs e)
{
foreach (ISessionFactory sessionFactory in SessionFactories)
{
ISession session = CurrentSessionContext.Unbind(sessionFactory);
session.Close();
CurrentSessionContext.Unbind(sessionFactory);
}
}
나는 AutoFac에서 내 SessionFactories를 검색하는 문제로 실행 해요. 즉, Resolve
메서드를 사용하여 검색하려고하면 빈 컬렉션이 생깁니다. 내가 대신 ResolveNamed
방법을 사용하는 경우, 사물이 작동이 작동하는 동안
SessionFactories =
new List<ISessionFactory>
{
container.ResolveNamed<ISessionFactory>("DB1"),
container.ResolveNamed<ISessionFactory>("DB2")
};
을, 오히려 깨지기 쉬운 것 (모든 이름 변경, 또는 내가 SessionFactories을 추가/제거하는 경우이 코드를 업데이트해야합니다). 명명 된 인스턴스을 포함하는 유형으로 모든 개체를 AutoFac에서 검색하는 방법이 있습니까?
가능한 중복 [autofac : 명명 된 형식의 컬렉션을 해결하는 방법?] (http://stackoverflow.com/questions/5779517/autofac-how-to-resolve-collection-of-named-types) – nemesv
아니요 복제. 참조 된 질문은 명명 된 인스턴스를 해결하는 방법을 묻습니다. 컨테이너 (이름, 키, 익명으로)에 등록 된 방법에 관계없이 유형별로 모든 인스턴스를 해결하는 방법을 묻습니다. –