2011-09-13 6 views
2

監査情報がspearateデータベースに保存されるようにアプリケーションを設定しようとしています。私は、Ninjectを使用して1つのデータベースを使用するようにNHibernateを設定して構成することができましたが、2番目のデータベースには使用できません。Ninjectを使用して2つのデータベースで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()メソッドは、これまでと呼ばれ、私は私の監査databseにセッションを取得することはできません。

すべてのヘルプは大幅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は、さまざまなクラスを派生させたように聞こえます。だからあなたは、WhenInjectedIntoの代わりにBaseLoggingModelからクラスが派生しているかどうかをチェックする条件をチェックする必要があります。

+0

私はこれを動作させることができませんでした。私も同様の問題があり、ここに質問を投稿しました:私は同様の問題があり、ここに質問を投稿しました:http://stackoverflow.com/questions/9392011/ninject-nhinbernate-with-two-or-databases – Filip

関連する問題