2009-11-21 5 views
1

런타임시 NHibernate Configuration에 대한 참조를 얻을 수있는 방법이 있습니까? 나는 SchemaExport()를 위해 그것을 필요로한다.런타임시 NHibernate Configuration 레퍼런스

업데이트 : FluentNHibernate와 함께 StructureMap을 사용하여 설정 중이지만, SessionFactory가 초기화 된 후 ioc에서 설정을 다시 작성할 필요없이 SessionFactory 나 다른 객체에서 가져올 수 있는지 알고 싶습니다. 구성을 참조하십시오.

+0

물론입니다. 초기 구성은 어떻게 작성하고 있습니까? 유창한 nhibernate? 액티브 레코드? 수동으로? –

+0

좀 더 자세히 설명해 주시겠습니까? 나는 비슷한 문제를 다루었다고 생각하지만, 잘못된 방향으로 당신을 지적하고 싶지는 않습니다. – jamesaharvey

답변

0

좋아, 어떻게 했어? 이제

ForRequestedType<FluentConfiguration>() 
      .CacheBy(InstanceScope.Singleton) 
      .TheDefault.Is.ConstructedBy(
      ()=>Fluently.Configure() 
           .Database(MsSqlConfiguration.MsSql2005 
            .AdoNetBatchSize(10) 
            .Driver("NHibernate.Driver.SqlClientDriver") 
            .ProxyFactoryFactory("NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle") 
            .UseOuterJoin() 
            .ConnectionString(@"Server=.\SQLEXPRESS;User Id=epitka;Password=password;Database=dnn49;") 
            .ShowSql() 
            .CurrentSessionContext("thread_static")) // CHANGE THIS FOR WEB 
           .Mappings(m => m.FluentMappings.AddFromAssemblyOf<MetaProject>()) 
           .ExposeConfiguration(
                cfg =>{ 
                  cfg.SetProperty(
                   Environment.TransactionStrategy, 
                   typeof (AdoNetTransactionFactory).FullName); 
                  cfg.SetProperty(Environment.GenerateStatistics, "true"); //REMOVE FOR LIVE 
                }) 
      ) 
      .WithName("SharMod_FluentConfiguration"); 

     ForRequestedType<Configuration>() 
      .TheDefault.Is.ConstructedBy(
      () => 
       { 
        var fc =ObjectFactory.GetInstance<FluentConfiguration>(); 
        return fc.BuildConfiguration(); 
       }) 
      .WithName("SharpMod_Configuration"); 

     //SharpMod_SessionFactory 
     ForRequestedType<ISessionFactory>() 
      .CacheBy(InstanceScope.Singleton) 
      .AddInstances(x => x.ConstructedBy(() => 
           ObjectFactory.GetNamedInstance<FluentConfiguration>("SharMod_FluentConfiguration") 
           .BuildSessionFactory()) 
           .WithName("SharpMod_SessionFactory")); 

그것을 얻기 위해 난 그냥 수행

var cfg = ObjectFactory.GetNamedInstance<Configuration>("SharpMod_Configuration");