2011-09-13 3 views
2

Audit 정보가 spearate 데이터베이스에 저장되도록 응용 프로그램을 설정하려고합니다. 나는 셋업하고 NHibernate가 하나의 데이터베이스를 사용하여 Ninject를 사용하도록 구성 할 수 있었지만 두 번째 데이터베이스는 사용할 수 없었다.Ninject를 사용하여 두 데이터베이스로 Nhibernate 설정

이 내가 시도 것입니다 :

public class NHibernateModule : NinjectModule 
{ 
    public override void Load() 
    { 
     Bind<ISessionFactory>() 
      .ToMethod(c => NHibernateHelper.CreateSessionFactory()) 
      .InSingletonScope(); 

     Bind<ISessionFactory>() 
      .ToMethod(c => NHibernateHelper.CreateLoggingSessionFactory()) 
      .WhenInjectedInto<BaseLoggingModel>() 
      .InSingletonScope(); 

     Bind<ISession>() 
      .ToMethod(c => c.Kernel.Get<ISessionFactory>().OpenSession()); 


    } 
} 

public static class NHibernateHelper 
{ 
    public static ISessionFactory CreateSessionFactory() 
    { 
     var cfg = new Configuration(); 
     return cfg.Configure().SetProperty("connection.connection_string_name", "ApplicationServices").BuildSessionFactory(); 
    } 
    public static ISessionFactory CreateLoggingSessionFactory() 
    { 
     var cfg = new Configuration(); 
     return cfg.Configure().SetProperty("connection.connection_string_name", "AuditingServices").BuildSessionFactory(); 
    } 
} 

Unfortunatley 만 CreateSessionFactory() 메소드가 이제까지라고하며 내 감사, 데이타베이스에 세션을 얻을 수 없습니다.

어떤 도움을 크게 appreceiated 될

답변

1

조건은 조건도 잘못 될 수있는 세션

Bind<ISessionFactory>() 
     .ToMethod(c => NHibernateHelper.CreateSessionFactory()) 
     .Named("Default") 
     .InSingletonScope(); 

    Bind<ISessionFactory>() 
     .ToMethod(c => NHibernateHelper.CreateLoggingSessionFactory()) 
     .Named("Logging") 
     .InSingletonScope(); 

    Bind<ISession>() 
     .ToMethod(c => c.Kernel.Get<ISessionFactory>("Default").OpenSession()); 
    Bind<ISession>() 
     .ToMethod(c => c.Kernel.Get<ISessionFactory>("Logging").OpenSession()) 
     .WhenInjectedInto<BaseLoggingModel>(); 

에 있어야합니다. BaseLoggingModel은 다양한 클래스를 파생 한 것처럼 들립니다. 따라서 When when whenInjectedInto 대신 BaseLoggingModel에서 파생 된 클래스인지 확인하기 위해 조건을 사용해야합니다.

+0

이 작업을 수행하지 못했습니다. 비슷한 문제가 있으며 여기에 질문을 게시했습니다. 비슷한 문제가있어서 여기에 질문을 게시했습니다. http://stackoverflow.com/questions/9392011/ninject-nhinbernate-with-two-or-databases – Filip

관련 문제