2010-04-27 26 views
18

我可能會精神錯亂,但是我找不到任何用於nhibernate的api參考資料。我找到了大量的手冊,教程,電子書等,但沒有API參考。我看到了nhibernate sourceforge頁面上的chm文件,但它似乎並不適用於我的任何PC(不同的操作系統)。nhibernate的api參考在哪裏?

有人能請我指出正確的方向嗎?

+9

是的,文檔不是NHibernate的強項。 – UpTheCreek 2010-04-27 07:08:06

+1

看看NH源,整個項目幾乎沒有XML文檔 – 2011-03-12 14:29:59

回答

0

有一個很好的書,涵蓋了很多,並且在網站上的HTML文檔(其中還附帶一本書)

(書將曼寧 - NHibernate的在行動 - 有點過時,但一個良好的開端)

這裏是link到網上參考

+2

好的,我確實看到了您發佈的鏈接。我會通過這個。我只是驚訝沒有一個每個班級和每種方法的大列表之一等 感謝您的書上的提示,如果我堅持嗯(我懷疑我會)然後我會給它一個試試:) – Simon 2010-04-27 15:45:19

+0

您應該可以通過Sandcastle運行包含的文檔文件(nhibernate.xml)並創建您的文檔文件。 – jjrdk 2011-01-11 16:37:17

8

我剛剛發現這一個:

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

它似乎並沒有被正式的,但至少它看起來的API參考...不像官方參考,它主要描述的概念和映射沒有關於類和成員的任何信息。

+0

鏈接被破壞了。 – 2016-01-27 17:37:51

+2

@KennyEvitt,我並不感到驚訝...另外,如果你在這裏,這意味着5年後,NH仍然沒有官方的API文檔...... – 2016-01-27 17:51:49

+0

他們這樣做;至少對於最新版本。 http://nhibernate.info/在GitHub中 - [回購](https://github.com/nhibernate/nhibernate.github.io)。或者,他們擁有最新版本的「參考」文檔。這實際上是我正在尋找的。我在他們的GitHub站點回購站點(爲'info'站點)打開了一個問題,爲過去的版本添加了參考文檔和可能的真實API文檔](https://github.com/nhibernate/nhibernate.github。 IO /問題/ 7)。 – 2016-01-27 18:03:59

1

如果您使用的是Windows,得到ILSpy和NHibernate.dll指向它。它與真實的API文檔並不完全一樣,但它不是一半糟糕。

1

據我所知,互聯網上沒有公開提供的類參考。你可以從源代碼構建它。克隆them,運行ShowBuildMenu.bat設置源(調試版本),然後進入doc文件夾,確保您在reference\readme.txt文件中指示的先決條件,並運行nant doc。這將在build文件夾中生成類別參考。

否則最常用的API不寬,而且大多是XML在Visual Studio工作intellisens記錄。 reference documentation具有提供更多上下文的優勢,可能有助於避免陷阱,如相信ISession.Update將用於更新實體(這是錯誤的,除非使用分離的實體或來自另一個會話的實體,否則不需要它)。

官方documentation referencehttp://nhibernate.info

子鏈接:

  • Global documentation list
  • Reference(我用得最多,特別是下面的子部分。)
    • Configuration
    • Mapping - basic/entities。 (在任何或解決方案的文件夾添加映射XSD定義文件讓VS知道它,讓你在你的HBM映射intellisens。)
    • Mapping - collections
    • Querying - general。不要錯過9.3.2中的指定查詢功能。
    • 查詢的API:
      1. HQL。我主要使用HQL和映射中的命名查詢來進行非動態構建的查詢。它們在構建會話工廠時得到解析和驗證,這通常發生在應用程序啓動時,因此它幾乎與編譯時驗證一樣好。檢查log4net日誌以獲取命名查詢解析失敗的詳細原因。
      2. Criteria API。我認爲它是在代碼中動態構建查詢的歷史方式,比構建HQL字符串更受歡迎。
      3. QueryOver API。基於Criteia API,並且支持lambda表達式,可以對查詢的實體命名進行編譯時驗證。在我看來,應該優先於Criteria API。
      4. Linq API。非常適合動態構建的查詢。請記住,它的實現將您的查詢轉換爲HQL。對於複雜的查詢,它可能會生成不受支持的HQL結構。瞭解HQL功能可以更好地理解如何爲複雜案例編寫受支持的Linq查詢。 (例如,通過一個複雜的秩序,更好地利用在OrderBy明確LINQ子查詢,而不是使用映射到您的查詢實體的集合。)
      5. Native SQL。那麼,不言而喻。當需要通過其他查詢API(SQL服務器全文,選擇xml,...)不可用的某些SQL專用功能時,可用於示例,並且您不希望擴展這些其他API。您也可以調用存儲過程。在使用本機SQL時,我傾向於使用SQL命名查詢。
    • Modifying data,第9.4節至9.7 + 9.9
    • Performances
      1. Batch fetching。關於這一點,您可以閱讀my post here以獲得詳細解釋爲什麼延遲加載對NHibernate非常有效,這要歸功於批量提取。這個單獨的特性總是會讓我比實體框架更喜歡NHibernate,直到它在EF中不再缺乏爲止。
      2. Second level cache。另一個很棒的NHibernate功能,在EF中缺少原生支持。請注意,您必須使用交易來利用此功能。它允許NHibernate在您通過應用程序進程更改數據時爲您自動驅逐緩存條目。如果沒有事務,NHibernate會在開始更改數據時立即禁用二級緩存,以避免讓緩存產生陳舊的數據。
    • Interceptors。這是允許自定義NHibernate內部工作的許多方法之一。 NHibernate非常強大,可以讓你擴展它。您也可以添加自己的HQL擴展名爲here,您自己的linq2NH擴展名爲here(全部都是我的答案)。還有其他方法,請參閱list瞭解linq2NH可擴展性解決方案。
  • Hibernate documentation。 NHibernate派生自Hibernate,但其文檔可能滯後於映射。我可能會去那裏查找我在hbm.xml xsd定義中找到的屬性,但是這些屬性在NHibernate一側沒有記錄。在Hibernate方面,hbm映射文檔可以在舊版本中找到,更新的文檔更多關注JPA,這是Java特定的。

此外,類引用很可能會接近Hibernate one。有太多的內部API支持它的實現,並沒有多大用處。

爲什麼這樣的API不能隱藏(內部,私有...)?爲了實現NHibernate的強大擴展性,不需要隱藏它們。我認爲這些功能是必須的。相比之下,由於缺乏可擴展性,它很難解決一些.Net項目的缺點。 (MVC FileResult and the TweakDispositionAsInline我不得不使用某種方法,或者嘗試擴展,請參閱this。)