2011-01-17 6 views
0

멀티 테넌트의 각 테넌트에 대해 사용자 지정 NHibernate.Search 디렉터리를 사용할 수 있도록 S # arp 응용 프로그램에서 nhibernate를 유창하게 구성해야합니다 앱.S # arp 아키텍처 1.9 + Fluently.Configure() NHiberbante

그러나 나는 해결책을 찾기 위해 몇 시간 씩 인터넷 검색을했지만 현재는 아무 것도 찾을 수없는 것 같습니다.

감사합니다, 폴

답변

0

필자가 직접 시도한 것은 아니지만 AddConfiguration은 cfgProperties 사전을 사용하며, 이는 특정 사용자에게 hibernate.search.default.indexBase 값을 전달할 수 있다고 생각합니다.

위에서 살펴본 키를 추가하면 null을 반환하므로 CfgHelper.LoadConfiguration()을 사용하려고하면 문제가 발생할 수 있습니다.

하지만 당신은 공장 키를 사용하여 각 공장에 대해 서로 다른 디렉토리를 사용하는 NHSearch를 구성 할 수 있습니다 : 당신은

private string GetIndexDirectory() { 
    INHSConfigCollection nhsConfigCollection = CfgHelper.LoadConfiguration(); 
    string factoryKey = SessionFactoryAttribute.GetKeyFrom(this); // Change this with however you get the factory key for your tenants, 
    string property = nhsConfigCollection.GetConfiguration(factoryKey).Properties["hibernate.search.default.indexBase"]; 
    var fi = new FileInfo(property); 
    return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fi.Name); 
} 
에 메소드 GetIndexDirectory을 변경해야 당신이 http://wiki.sharparchitecture.net/Default.aspx?Page=NHibSearch 에 대한 지침을 다음과 같은 경우

<nhs-configuration xmlns="urn:nhs-configuration-1.0"> 
    <search-factory sessionFactoryName="YOUR_TENANT1_FACTORY_KEY"> 
     <property name="hibernate.search.default.indexBase">~\IndexTenant1</property> 
    </search-factory> 
    <search-factory sessionFactoryName="YOUR_TENANT2_FACTORY_KEY"> 
     <property name="hibernate.search.default.indexBase">~\Tenant2</property> 
    </search-factory> 
    </nhs-configuration> 

0
NHibernateSession.AddConfiguration 

작동하지 않습니다?

관련 문제