Es gibt keine Klassenreferenzen im Internet, soweit ich weiß. Sie können es von der Quelle erstellen. Klonen Sie them, führen Sie ShowBuildMenu.bat
aus, um die Quelle einzurichten (Debugbuild), gehen Sie dann in den Ordner doc
, stellen Sie sicher, dass die Voraussetzungen in der Datei reference\readme.txt
angegeben sind, und führen Sie nant doc
aus. Dadurch wird die Klassenreferenz im Ordner build
generiert.
Ansonsten sind die am häufigsten verwendeten API nicht breit, und die meisten von ihnen sind XML dokumentiert mit Intellisens in Visual Studio arbeiten. Der reference documentation hat den Vorteil, mehr Kontext zu geben und hilft wahrscheinlich, Fallstricke zu vermeiden, wie der Glaube, dass ISession.Update
für das Aktualisieren von Entitäten verwendet werden soll (das ist falsch, Sie brauchen es nur, wenn Sie losgelöste Entitäten oder Entitäten aus einer anderen Sitzung verwenden).
Offizielle documentation reference ist auf http://nhibernate.info.
Sub-Links:
- Global documentation list
- Reference (Was ich meistens verwenden, insbesondere Unterteile folgen.)
- Configuration
- Mapping - basic/entities. (Add-Mapping XSD-Definitionsdatei in irgendwelchen oder Ihre Lösung Ordner für die Vermietung VS wissen es und geben Sie intellisens in Ihrem hbm Zuordnungen.)
- Mapping - collections
- Querying - general. Verpassen Sie nicht die Funktion für benannte Abfragen in 9.3.2.
- Abfragen von APIs:
- HQL. Ich verwende meistens HQL mit benannten Abfragen in Zuordnungen für Abfragen, die nicht dynamisch erstellt werden. Sie werden beim Erstellen der Sitzungsfactory analysiert und validiert, was normalerweise beim Start der Anwendung auftritt. Daher ist sie fast so gut wie die Validierung der Kompilierungszeit. Überprüft log4net-Protokolle, um detaillierte Gründe für Fehler beim Parsen von analysierten Abfragen zu erhalten.
- Criteria API. Ich betrachte es als den historischen Weg, dynamisch Abfragen in Code zu erstellen, der gegenüber dem Konstruieren von HQL-Strings vorzuziehen ist.
- QueryOver API. Basierend auf der Criteia-API, mit Unterstützung für Lambda-Ausdrücke für die Kompilierungszeit-Validierung von Abfragen-Entity-Namen. Sollte meiner Meinung nach der Kriterien-API vorgezogen werden.
- Linq API. Ideal für dynamisch erstellte Abfragen. Bedenken Sie, dass die Implementierung Ihre Abfragen in HQL übersetzt. Bei komplexen Abfragen generiert es möglicherweise nicht unterstützte HQL-Konstrukte. Die Kenntnis der HQL-Funktionen ermöglicht ein besseres Verständnis darüber, wie eine unterstützte Linq-Abfrage für komplexe Fälle geschrieben wird. (Verwenden Sie zum Beispiel für eine komplexe Bestellung besser eine explizite Linq-Unterabfrage in der
OrderBy
, anstatt eine Sammlung zu verwenden, die auf Ihre abgefragte Entität abgebildet ist.)
- Native SQL. Nun, ziemlich selbsterklärend. Beispiel, wenn Sie eine spezielle SQL-Funktion benötigen, die nicht über andere Abfrage-APIs verfügbar ist (SQL Server-Volltext, wählen Sie für xml, ...), und dass Sie diese anderen APIs nicht erweitern möchten. Sie können auch gespeicherte Prozeduren aufrufen. Bei Verwendung von nativem SQL bevorzuge ich SQL-Namensabfragen.
- Modifying data, §9.4 durch 9,7 + 9,9
- Performances.
- Batch fetching. Lesen Sie hierzu my post here, um zu erfahren, warum das faule Laden dank NHibernate dank Batch-Abruf sehr effizient sein kann. Diese einzige Funktion wird mich immer dazu bringen, NHibernate gegenüber Entity Framework zu bevorzugen, bis es nicht mehr an EF mangelt.
- Second level cache. Eine weitere großartige NHibernate-Funktion, bei der EF keine Unterstützung bietet. Vorsicht, Sie müssen Transaktionen nutzen, um dies zu nutzen. Es ermöglicht NHibernate, zwischengespeicherte Einträge für Sie automatisch zu entfernen, wenn Sie Daten über Ihren Anwendungsprozess ändern. Ohne Transaktionen deaktiviert NHibernate den Cache der zweiten Ebene, sobald Sie mit dem Ändern von Daten beginnen, um zu vermeiden, dass der Cache veraltete Daten liefert.
- Interceptors. Dies ist eine Möglichkeit unter vielen, die es ermöglichen, das Innenleben von NHibernate anzupassen. NHibernate ist sehr stark darin, dass Sie es erweitern können. Sie können auch Ihre eigenen HQL-Erweiterungen als here hinzufügen, Ihre eigene Erweiterung linq2NH als here (alles Antworten von mir). Und es gibt andere Möglichkeiten, siehe list für Linq2NH Erweiterbarkeit Lösungen.
- Hibernate documentation. NHibernate leitet sich von Hibernate ab, aber seine Dokumentation kann bei Abbildungen etwas hinterherhinken. Ich kann dort nach Mapping-Eigenschaften suchen, die ich in der Definition von hbm.xml xsd gefunden habe, die aber auf der NHibernate-Seite nicht dokumentiert sind. Auf der Hibernate-Seite ist die hbm-Mapping-Dokumentation in älteren Versionen zu finden. Die neuere Dokumentation konzentriert sich mehr auf JPA, das Java-spezifisch ist.
Darüber hinaus wird eine Klassenreferenz sehr wahrscheinlich in der Nähe der Hibernate one sein. Es gibt so viele interne APIs, die seine Implementierung unterstützen, die nicht sehr brauchbar sind.
Warum sind solche API nicht versteckt (intern, privat, ...)? Sie müssen nicht versteckt werden, um die umfangreichen Erweiterungsmöglichkeiten von NHibernate zu ermöglichen. Diese Fähigkeiten sind meiner Meinung nach ein Muss. Im Gegensatz dazu ist es so schwierig, einige andere .Net-Projektdefizite zu beheben, da sie nicht ausreichend erweiterbar sind. (MVC FileResult
and the TweakDispositionAsInline
Ich musste verwenden, anstatt nur einige Methode zu überschreiben, oder versuchen, zu erweitern linq-to-entities, siehe this.)
Yeah, Dokumentation ist nicht NHibernate der starke Punkt. – UpTheCreek
Mit Blick auf die NH-Quelle gibt es praktisch keine XML-Dokumentation für das gesamte Projekt. –