2010-04-27 5 views
18

Ich gehe vielleicht geistig, aber ich kann kein API-Referenzmaterial für Nhibernate finden. Ich habe viele Handbücher, Tutorials, Ebooks usw. gefunden, aber keine API-Referenz. Ich sah die chm-Datei auf der Seite nhibernate sourceforge, aber es scheint nicht auf einem meiner PCs (verschiedene Betriebssysteme) zu funktionierenWo ist die API-Referenz für Nhibernate?

Kann mir bitte jemand in die richtige Richtung zeigen?

+9

Yeah, Dokumentation ist nicht NHibernate der starke Punkt. – UpTheCreek

+1

Mit Blick auf die NH-Quelle gibt es praktisch keine XML-Dokumentation für das gesamte Projekt. –

Antwort

0

es ist ein gutes Buch, das viel abdeckt, und es gibt die HTML-Dokumentation auf der Website (die auch als Buch kommt)

(das Buch würde bemannen - nHibernate in Aktion - ein wenig veraltet, aber ein guter Anfang)

Hier ist die link in der Online-Referenz

+2

Ok, ich habe den Link gesehen, den Sie gepostet haben. Ich werde das durchmachen. Ich bin nur überrascht, es gibt keine dieser großen Listen von jeder Klasse und jeder Methode usw. Danke für den Tipp auf das Buch, wenn ich bei nh bleibe (ich vermute ich werde) dann gebe ich es ein versuchen Sie es :) – Simon

+0

Sie sollten in der Lage sein, die enthaltenen Dokumentationsdateien (nhibernate.xml) über Sandcastle auszuführen und Ihre Dokumentationsdatei zu erstellen. – jjrdk

8

ich fand gerade diese:

http://web.archive.org/web/20141001063046/http://elliottjorgensen.com/nhibernate-api-ref/index.html

Es scheint nicht offiziell, aber zumindest sieht wie eine API-Referenz ... im Gegensatz zu der offiziellen Referenz, die meist Konzepte und Zuordnungen ohne Informationen über Klassen und Mitglieder beschreibt.

+0

Der Link ist für mich gebrochen. –

+2

@KennyEvitt, ich bin nicht überrascht ... Auch, wenn Sie hier sind, bedeutet das, dass 5 Jahre später NH noch keine offizielle API-Dokumentation hat ... –

+0

Sie tun; zumindest für die neueste Version. http://nhibernate.info/ ist in GitHub - [der Repo] (https://github.com/nhibernate/nhibernate.github.io). Oder sie haben die "Referenz" -Dokumente für die neueste Version. Genau das habe ich gesucht. Ich habe [ein Problem in ihrem GitHub-Seiten-Repo (für die "Info" -Site) geöffnet, um die Referenzdokumente und möglicherweise echte API-Dokumente für frühere Versionen hinzuzufügen (https://github.com/nhibernate/nhibernate.github. io/issues/7). –

1

Wenn Sie unter Windows sind, erhalten Sie ILSpy und zeigen Sie auf NHibernate.dll. Es ist nicht ganz dasselbe wie echte API-Dokumentation, aber es ist nicht halb so schlimm.

1

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:
      1. 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.
      2. 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.
      3. 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.
      4. 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.)
      5. 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.
      1. 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.
      2. 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 , siehe this.)