2009-08-26 8 views
1

Ich verwende S # arp Architecture (die NHibernate verwendet). Ich habe einige Entitäten zu Tabellen in einer Datenbank zugeordnet und andere zu einer anderen Datenbank zugeordnet. Offenlegung: Datenbanken existieren bereits, so dass ich zuerst kein Modell machen kann.S # arp Architektur/NHibernate mit mehreren Datenbanken

Wie konfiguriere ich dies um zu funktionieren?

EDIT: Wäre die SchemaIs-Methode in Fluent NHibernate der empfohlene Ansatz zum Zuordnen einer Entität zu einer Tabelle in einer anderen Datenbank? Ich glaube, das ist auch über NHibs XMP-Mapping-Dateien möglich.

Antwort

3

Sie sollten NHibernateSession.AddConfiguration stattdessen für zusätzliche Datenbank verwenden. Der Aufruf von NHibernateSession.AddConfiguration wird sofort unter NHibernateSession.Init() ausgeführt. Für die zweite Initialisierung muss ein expliziter Session Factory Key definiert werden.

Der gesamte Prozess wird hier im Detail erklärt.

https://github.com/sharparchitecture/sharp-architecture/wiki?Page=FAQ

2

Die Art, wie ich dies getan habe, ist die Initialisierung mehrerer NHibernateSessions in InitializeNHibernateSession innerhalb von global.asax.cs mit mehreren Nhibernate-Konfigurationsdateien. Ich habe dann [Transaction ("nhibernate.dbname")] (dbname sind Namen, die WebSessionStorages zugewiesen sind) in den Controllern für jede geeignete Aktionsmethode verwendet.

+0

Könnten Sie eine Probe Ihres InitializeNHibernateSession Methode hinterlassen bitte? Vielen Dank. – LordHits

+0

Hier gehen Sie ... öffentliche Überschreibung void Init() { base.Init(); webSessionStorage1 = neuer WebSessionStorage (this, "nhibernate.db1"); webSessionStorage2 = neuer WebSessionStorage (this, "nhibernate.db2"); } ... private void InitializeNHibernateSession() { NHibernateSession.Init ( webSessionStorage1, neuen String [] {Server.MapPath ("~/bin/MyProject.Data.dll")}, Server .MapPath ("~/NHibernateDB1.config")); NHibernateSession.Init ( webSessionStorage2, neuen String [] {Server.MapPath ("~/bin/MyProject.Data.dll")}, Server.MapPath ("~/NHibernateDB2.config")); } – Richard

+1

Was passiert, wenn eine Controller-Aktion auf der Datenbank ausgeführt wird? – Amitabh

Verwandte Themen