2010-04-27 25 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。)