3

StructureMap、NHibernate、および複数のデータベースを設計のソースとして使用して、タイプの複数のインスタンスを構造マップに追加しようとしています

レジストリにそれらを追加する方法は次のとおりです。

foreach (ConnectionStringSettings location in ConfigurationManager.ConnectionStrings)
        {
            For<INHibernateSessionFactory>()
                .Add(x => new NHibernateSessionFactory(location.Name, GetSessionFactory(location.ConnectionString)));
        }

そして、私の AppSessionFactory で:

 public AppSessionFactory(IEnumerable<NHibernateSessionFactory> factories)
    {
        _factories = new List<INHibernateSessionFactory>(factories);
    }

それもこれも機能しません:

_factories = ObjectFactory.GetAllInstances<INHibernateSessionFactory>().ToList();

どちらの呼び出しも、同じオブジェクト、同じ場所、同じ SessionFactory を 2 つ返します。

4

1 に答える 1

0

完全にはわかりませんが、これは、変更されたクロージャーにアクセスする方法に関係している可能性があります。

次のように、変数のローカルスコープのコピーを作成してみます。

foreach (ConnectionStringSettings location in ConfigurationManager.ConnectionStrings)
{
    ConnectionStringSettings localLocation = location;
    For<INHibernateSessionFactory>()
        .Add(x => new NHibernateSessionFactory(localLocation.Name, GetSessionFactory(localLocation.ConnectionString)));
}
于 2013-01-09T17:34:14.263 に答える