2011-01-17 2 views
0

Ich muss Nhibernate in meiner S # arp-Anwendung fließend konfigurieren, so dass ich ein benutzerdefiniertes NHibernate.Search-Verzeichnis für jeden meiner Mandanten in einem Mandanten verwenden kann AppS # arp Architektur 1.9 + Fluenzig.Configure() NHiberbante

Allerdings habe ich stundenlang nach einer Lösung gegoogled, aber kann anscheinend nichts Strom finden, der funktioniert.

Danke, Paul

Antwort

0

Ich habe das selbst nicht versucht, aber AddConfiguration nimmt ein Wörterbuch von cfgProperties, das ich denke, dass Sie den mandantenspezifischen hibernate.search.default.indexBase Wert an übergeben können.

Ich habe mir das angeschaut, das Hinzufügen des Schlüssels wie oben beschrieben verursacht ein Problem, wenn Sie versuchen, CfgHelper.LoadConfiguration() zu verwenden, da es Null zurückgibt.

Aber Sie können NHSearch konfigurieren für jede Fabrik verschiedene Verzeichnisse verwenden, um die Fabrik Taste:

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

Wenn Sie Anweisungen folgen auf http://wiki.sharparchitecture.net/Default.aspx?Page=NHibSearch Sie würden die Methode GetIndexDirectory zu

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); 
} 
ändern müssen
0
NHibernateSession.AddConfiguration 

wird nicht funktionieren?