2011-01-17 4 views
0

Мне нужно свободно настраивать nhibernate в моем приложении S # arp, чтобы я мог использовать настраиваемый каталог NHibernate.Search для каждого из моих арендаторов в многопользовательском режиме приложение.S # arp Architecture 1.9 + Fluently.Configure() NHiberbante

Тем не менее, я много часов искал решение, но не мог найти ничего текущего, что работает.

Спасибо, Пол

ответ

0

Я не пробовал это сам, но AddConfiguration принимает словарь cfgProperties, который, я думаю, вы можете передать конкретное значение hibernate.search.default.indexBase для арендатора.

Я посмотрел на это, добавив ключ, как описано выше, вызовет проблему, если вы попытаетесь использовать CfgHelper.LoadConfiguration(), так как он вернет значение null.

Но вы можете настроить NHSearch использовать различные каталоги для каждого завода с использованием ключа фабрики:

<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> 

Если вы следуете инструкциям по http://wiki.sharparchitecture.net/Default.aspx?Page=NHibSearch Вы должны были бы изменить метод GetIndexDirectory к

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); 
} 
0
NHibernateSession.AddConfiguration 

не будет работать?

Смежные вопросы