Ich verwende Fluent NHibernate und muss jetzt mit archivierten Daten arbeiten, wobei die gleiche Tabelle in mehreren MSSQL-Datenbanken vorhanden ist. Abhängig von einem vom Benutzer angegebenen Date-Wert muss ich mich mit einer anderen Datenbank verbinden, während alle Mapping-Informationen gleich bleiben.Switching Database für die gleiche gemappte Tabelle
Spezifischer: Wenn der angegebene Datumswert innerhalb des aktuellen Jahres liegt, verwenden Sie DB CUR
, andernfalls verwenden Sie eine jährliche DB (2011, 2010, 2009, ...).
Jetzt gab es eine Zeit, als Leute mir erzählten, dass eine SessionFactory immer wieder neu zu erstellen ziemlich teuer ist, also dachte ich mir, dass es eine Möglichkeit gibt, die vorhandene sessionFactory, Update my ClassMap, zu verwenden (etwas wie Änderung Schema von "CUR.DBO" zu "2011.BO") und wiederverbinden.
Ich habe versucht, Chaos mit beiden FluentConfiguration und Session, aber dann nahm ich einen Pfeil im Knie nicht einen Weg finden könnte die Zuordnungen zur Laufzeit zu aktualisieren.
Erstelle ich am Ende eine neue SessionFactory? Oder kennt jemand da draußen ein praktikables Verfahren, um Fluent-NHibernate-Mappings zur Laufzeit neu zu initialisieren?
EDIT: Ein sehr wichtiges Detail, die SqlConnection wird auch extern zur Verfügung gestellt. Es bietet Zugriff auf alle Datenbanken, was bedeutet, dass ich theoretisch nie Verbindungen erstellen muss. Also muss ich im Grunde eine SessionFactory für jedes Archiv erstellen, um die Informationen des Mapping-Schemas zu aktualisieren und auf eine andere Datenbank zu zeigen. Aber genau hier stecke ich fest.
Warum nicht 2 Session-Fabriken erstellen? Eine für die Archivdatenbank und eine für die Produktionsdatenbank. –
Wir haben ein Archiv pro Jahr, also würde ich am Ende mindestens 10 erstellen.Das ist im Grunde, was ich wissen muss, aber hoffentlich gibt es einen klügeren Weg ... –