1

複数の NHibernate セッション ファクトリを使用する必要がある MVC 4 アプリケーションを作成しています。これらのオブジェクトを名前で AutoFac に登録しています。私の global.asax では、すべてのセッション ファクトリを取得し、それらを CurrentSessionContext にバインド/バインド解除する必要があります。

 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 からすべてのオブジェクトを取得する方法はありますか?

4

1 に答える 1

1

使用するResolve<IEnumerable<ISessionFactory>>()

詳細については、関係タイプを参照してください。

于 2013-02-26T22:08:09.627 に答える