Hallo,
ich bin gerade dabei, eine WPF-Anwendung nach dem MVVM-Pattern mit Prism zu entwickeln. Dazu habe ich mir die Prism-Doku durchgelesen und habe das Prinzip auch soweit verstanden.
Nun möchte jedoch, dass alle Daten in einer Datenbank gespeichert werden. Als Datenbank habe ich mir den SQL Server Compact 3.5 ausgesucht (zwecks lokaler Verfügbarkeit), das OR-Mapping übernimmt NHibernate sowie Fluent NHibernate.
Nun zu Prism: Ein lauffähiges Prism-Grundgerüst habe ich schon, aber eben noch ohne Datenbank. Im Netz findet man auch viel, aber dann doch immer nur zu dem einen oder dem anderen, aber überhaupt nicht, wie man beides in eine Anwendung gießt (jedenfalls habe ich noch kein Beispiel gefunden). Das Grundgerüst sieht momentan so aus:
Jetzt habe ich mir gedacht, dass ich am besten den Zugriff auf die Datenbank in eine Service-Modul kapsele und so alles zentral an einer Stelle zur Verfügung habe. Die anderen Module, die die Services benutzen möchten, bekommen die konkreten Implementierung per DI injeziert. Aber wie muss ich NHibernate bzw. Fluent NHibernate in dem Service-Modul einsetzen bzw. konfigurieren, damit:
Außerdem brauche ich ja beim Zugriff auf die Datenbank immer die SessionFactory in den Repository-Klassen. Wäre es hier nicht auch sinnvoll, die SessionFactory (die ja eh vom Typ ISessionFactory ist) per DI in die Klassen zu injezieren? Aber wie baue ich die SessionFactory mit Fluent NHibernate auf, damit die überhaupt injeziert werden kann?
Fragen über Fragen.
Wäre toll, wenn mir hier jemand einen Tipp geben könnte, wo ich da am besten ansetzen könnte.
Grüße
Hallo roccabyte,
wo siehst du den Nachteil? Du hast unterschiedliche Layer. Die Layer sind mit Interfaces entkoppelt. Über DI werden dann die Klassen injizierst. Wenn du ein Interface angibst, ist es doch okay, weil du in der Situtation nicht direkt auf den Layer zugreifst.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Nachteil? 🤔
Was meinst du damit? Ich habe doch gar keine Nachteil genannt. Ich sehe in der Verwendung von Prism nur Vorteile, deswegen benutze ich es ja auch. Mir gehts eher darum, wie ich in dem Service-Modul den Datenbankzugriff ordentlich instanziieren kann, siehe:
Aber wie muss ich NHibernate bzw. Fluent NHibernate in dem Service-Modul einsetzen bzw. konfigurieren, damit:
- beim initialen Start der Anwendung eine Datenbank erstellt wird, falls noch keine existiert
- alle konkreten Repository- und Service-Klassen in dem DI-Container registriert werden, damit die anderen Module darauf zugreifen können
Außerdem brauche ich ja beim Zugriff auf die Datenbank immer die SessionFactory in den Repository-Klassen. Wäre es hier nicht auch sinnvoll, die SessionFactory (die ja eh vom Typ ISessionFactory ist) per DI in die Klassen zu injezieren? Aber wie baue ich die SessionFactory mit Fluent NHibernate auf, damit die überhaupt injeziert werden kann?