Ich bin auf der Suche nach jeder Art von Dokumentation, eine Open-Source-Nhibernate Winform-Anwendung, die ich studieren kann, oder noch besser ein Winform/Nhibernate-Framework. Ich habe ein wenig davon in Nhibernate contrib und NhAddins gesehen, aber das ist alles. Es gibt viel über das Web, aber nur sehr wenige über Winform. Warum ist das?Beispiel von Nhibernate winform Anwendung
Antwort
Es gibt eine Arbeit im Gange, die das Mischen von nHibernate + Windows Formen, die von Sebasian Talamoni available here geschrieben wurden, diskutiert. Es enthält Diskussion + Code.
Ich fand diese, die viel jünger ist. Es hat die Codegenerierung und verwendet spring.net http://www.codeproject.com/KB/cs/NHibernateForWinforms.aspx
Der Grund, warum es so wenige Beispiele für WinForms sind, ist imho, Sitzungen Verwaltung viel komplexer ist in Smart Clients als in der Web-Welt.
In der Web-Welt öffnen Sie eine ISession, wenn eine http-Sitzung startet, und Sie schließen die ISession, wenn die http-Sitzung beendet ist.
Es gibt keine direkte Übersetzung des Konzepts der http-Sitzung in einem Smart Client; mehrere Bildschirme alle gleichzeitig geöffnet, einige minimiert, andere Bildschirme öffnen und schließen die ganze Zeit, einige werden geschlossen, ohne Änderungen zu speichern ... Sie bekommen die Idee.
Ich denke, es gibt drei grundlegende Strategien:
1 Sitzung pro Anwendung
ich weg von diesem bleiben würde. Denken Sie daran, dass diese Sitzung jetzt unbrauchbar ist, wenn eine Ausnahme wie eine veraltete Entitätsausnahme von Ihrer Singleton-Sitzung ausgelöst wird. Ihre App ist grundsätzlich in der Doo Doo.
Session pro Bildschirm
Das ist ein bisschen besser, vermeiden Sie Ihre App die Pfanne gehen nach unten, wenn eine einzelne Sitzung sprengt. Einige Bildschirme können jedoch auch zusammen in der gleichen unit of work kollabieren. Sie müssen die gleiche Sitzung teilen, oder Sie haben issues versucht, Ihre Entitäten zwischen Bildschirmen zu teilen, da persistente Entitäten Affinität mit der Sitzung haben, die sie geladen hat.
Persistent Gespräche
Ich denke, das ist der Weg zu gehen. Sie definieren einen Service, der den Umfang Ihrer Arbeitseinheit enthält. Jedes Mal, wenn Sie Methoden für diesen Dienst aufrufen, wird die richtige ISession für Sie unsichtbar eingetauscht. Wenn Sie mit Ihrem Service fertig sind, rufen Sie eine andere Methode auf und die Sitzung wird verworfen.
Die Instanz des Dienstes kann zwischen Ihren Bildschirmen geteilt werden, sodass sie die Sitzung freigeben. Mehrere Sitzungen können gleichzeitig geöffnet sein. All dies geschieht über Aspect Oriented Programming-Techniken, Sie müssen nichts anderes tun, als Ihre Services mit Attributen zu versehen.
Das hört sich ziemlich kompliziert an, also checken Fabios Posts darauf here, here und here.
Es gibt eine Implementierung dieses Musters in unoffical nh addins. Dies funktioniert in Windsor, könnte wahrscheinlich in andere IoC-Container umgewandelt werden.
Fabio Maulo hat eine nette post in Bezug auf Sitzungsverwaltung in einer WinForms App, es gibt auch einen Beispiel-Download der Anwendung am unteren Rand verbunden.
This Artikel von Oren Eini ist das beste Beispiel für die Implementierung einer Desktop-Anwendung Windows-Anwendung, die ich gesehen habe. Die detaillierten Entwurfsmuster und Best Practices sollten für WinForms- oder WPF \ Silverlight-Anwendungen gelten.
- 1. Plugins in winform Anwendung
- 2. Schaufenster 10 Toast von WinForm Anwendung
- 3. Wert von Combobox in Winform-Anwendung lesen
- 4. Mehrere Formulare in WinForm-Anwendung
- 5. Bericht in Winform-Anwendung zentralisieren
- 6. Silverlight-Objektanzeige in Winform-Anwendung
- 7. WPF-Anwendung, die WinForm-Steuerelemente und WinForm-Benutzersteuerelemente einbetten
- 8. ASP.NET MVC, Spring.NET, NHibernate Ersteinrichtung/Beispiel/Lernprogramm
- 9. wie matlab figur in winform anwendung plotten?
- 10. MDI WinForm-Anwendung und doppelte Kind Formularspeicherverlust
- 11. WinForm-Anwendung und MS Office-Referenzen
- 12. Sanduhr-Problem in einer WinForm-Anwendung
- 13. Porting Winform-Anwendung auf Raspberry PI
- 14. Web-Anwendung Architektur mit Nhibernate
- 15. Antlr4 C# -Anwendung Tutorial/Beispiel
- 16. NHibernate-Sitzungsverwaltung in der WCF-Anwendung
- 17. Suche nach einem Beispiel mit Nhibernate Validierung mit WPF
- 18. Sichtbarer Bereich von Winform
- 19. Winform Tastaturverwaltung
- 20. NHibernate der Cache für WinForms-Anwendung verwenden
- 21. Verwenden einer DLL in einer Winform-Anwendung in C#
- 22. Fluent Nhibernate Konfigurationsfehler in Multithread-Anwendung
- 23. Verwenden von flüssigem NHibernate in der kommerziellen Anwendung
- 24. Erschwingliche Mapping oder Geocodierung Integration mit Winform-Anwendung?
- 25. WinForm Anwendung UI Hangs während lang andauernde Operation
- 26. Wiedergabe einer MP3-Datei in einer WinForm-Anwendung
- 27. Ablaufdiagramm zur Modellierung des Prüfprozesses in .NET Winform-Anwendung
- 28. Beispiel MVC/MVP WinForms-Anwendung (Non Trivial)
- 29. Einstellung Hintergrund von WinForm ListBox
- 30. Arbeitsbeispiele von winform/WPF-Anwendungen
Danke für den Link, ich habe diese Beispiel App bereits vor einiger Zeit ausprobiert. Die im Zip enthaltene Dokumentation ist interessant. Ich würde gerne andere Artikel wie diesen finden. Wissen Sie, ob der Autor eine Fortsetzung veröffentlicht hat? –
Ich weiß nichts von meinem Kopf. Der Artikel hat nützliche, interessante Informationen. Die Google-Suche gibt jedoch viele andere Informationen zurück. –
Ich möchte etwas direkt verwendbar finden, wie die Tonnen und Tonnen von Blog-Plattform können Sie aber für nHibernate finden. Und Winform :). –