StructureMap中具有多个nHibernate会话工厂的命名单例实例(StructureMap 2.5.4)

StructureMap中具有多个nHibernate会话工厂的命名单例实例(StructureMap 2.5.4),nhibernate,structuremap,sessionfactory,Nhibernate,Structuremap,Sessionfactory,我有与中描述的完全相同的场景 如果我使用StructureMap 2.6.2实现这一点-太棒了 然而,我目前不得不使用StructureMap 2.5.4,这是由于遗留项目中涉及的各种因素无法使用最新的.NET framework版本以及其他一些原因。对于这个问题,假设我无法为可预见的未来升级 2.5.4显然与2.6.2在语法上有很大不同,我不知道如何使用它的API实现相同的东西 尤其是这些东西 For<ISessionFactory>().LifecycleIs(Lifecycle

我有与中描述的完全相同的场景

如果我使用StructureMap 2.6.2实现这一点-太棒了

然而,我目前不得不使用StructureMap 2.5.4,这是由于遗留项目中涉及的各种因素无法使用最新的.NET framework版本以及其他一些原因。对于这个问题,假设我无法为可预见的未来升级

2.5.4显然与2.6.2在语法上有很大不同,我不知道如何使用它的API实现相同的东西

尤其是这些东西

For<ISessionFactory>().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.Singleton))
            .Add(context => CreateSessionFactory(@"MyName")).Named("MySessionFactory");
        For<ISession>().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.Hybrid))
            .Add(context => context.GetInstance<ISessionFactory>("MySessionFactory").OpenSession()).Named("MyName");

For<ISessionFactory>().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.Singleton))
            .Add(context => CreateSessionFactory(@"My2ndName")).Named("My2ndSessionFactory");
        For<ISession>().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.Hybrid))
            .Add(context => context.GetInstance<ISessionFactory>("MySessionFactory").OpenSession()).Named("My2ndName");
For().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.Singleton))
.Add(context=>CreateSessionFactory(@“MyName”)).Named(“MySessionFactory”);
For().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.Hybrid))
.Add(context=>context.GetInstance(“MySessionFactory”).OpenSession()).Named(“MyName”);
For().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.Singleton))
.Add(context=>CreateSessionFactory(@“My2ndName”)。命名为(“My2ndSessionFactory”);
For().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.Hybrid))
.Add(context=>context.GetInstance(“MySessionFactory”).OpenSession()).Named(“My2ndName”);
…使用名为CreateSessionFactory(string)的方法创建相关配置

“Add”和随后的“GetInstance”是无效的,需要进行重构才能使用2.5.4-我只是太笨了,不知道如何实现,或者是否确实可以实现相同的目标


干杯

请记住,您的语法应该适用于2.5.4。对于2.5.3,应使用以下语法:

c.ForRequestedType<ISessionFactory>().CacheBy(InstanceScope.Singleton).
   AddInstances(
     x =>
     {
       x.ConstructedBy(() => CreateSessionFactory("MyName"))
         .WithName("MyName");
       x.ConstructedBy(() => CreateSessionFactory("My2ndName"))
         .WithName("My2ndName");
     });
c.ForRequestedType().CacheBy(InstanceScope.Singleton)。
附加值(
x=>
{
x、 ConstructedBy(()=>CreateSessionFactory(“MyName”))
.WithName(“MyName”);
x、 构造函数(()=>CreateSessionFactory(“My2ndName”))
.具有名称(“My2ndName”);
});

我记得你的语法应该在2.5.4中使用。对于2.5.3,应使用以下语法:

c.ForRequestedType<ISessionFactory>().CacheBy(InstanceScope.Singleton).
   AddInstances(
     x =>
     {
       x.ConstructedBy(() => CreateSessionFactory("MyName"))
         .WithName("MyName");
       x.ConstructedBy(() => CreateSessionFactory("My2ndName"))
         .WithName("My2ndName");
     });
c.ForRequestedType().CacheBy(InstanceScope.Singleton)。
附加值(
x=>
{
x、 ConstructedBy(()=>CreateSessionFactory(“MyName”))
.WithName(“MyName”);
x、 构造函数(()=>CreateSessionFactory(“My2ndName”))
.具有名称(“My2ndName”);
});

我应该加上使用“Use”和“WithName”这两个词——它不能正常工作——这是我第一次尝试。我应该加上使用“Use”和“WithName”这两个词——它不能正常工作——这是我第一次尝试。谢谢你——这正是我想要的。谢谢你——这正是我想要的。