我会说 NHibernate 乍一看令人印象深刻,而且学习起来似乎很复杂。因此,在快速阅读了大约 260 页的介绍文档并坚持我需要在测试应用程序中执行的任务之后,NHibernate 确实是要走的路。如果您对 XML 映射文件不感兴趣,只需使用FluentNHibernate,它允许您使用 OOP 来映射您的业务域对象。
此外,如果您对 NHibernate 并不完全满意并且更喜欢采用另一种方式,Enterprise Library 4.1(2008 年 10 月)可能是一个有用的工具。根据情况,在某些组织中,我选择了 NHibernate - Enterprise Library 的混合方法。Enterprise Library 中的数据访问应用程序块 (DAAB) 非常容易学习,除了您已经知道的内容外,您不需要学习任何内容。您只需要知道使用什么对象从 DatabaseProviderFactory 类创建 DbConnection 以从配置文件中读取,并且您可以指定默认数据库。
至于我的顾虑,我经常同时使用 NHibernate 和 Enterprise Library。例如,DAAB 允许我为每个配置文件指定一个数据库连接,因为我更喜欢每个文件只参数一个连接。这使我不必为根本没有更改的配置部署不必要的配置文件,而只为另一个连接部署新的配置文件。因此,如果您合并一个必须在其他地方连接到另一个数据存储的新模块,您构建您的模块而不关心其余部分,使用您的模块的 DLL 以及这个新的 DAAB 配置文件更新您的软件。
至于 NHibernate,重要的是不要在不再需要 ISessionFactory 时将其删除。实例化成本很高,因此您希望将其保存在内存中。不过,您可以做的是序列化您的配置对象类(因为它是可序列化的),因此您的应用程序只有在您的 NHibernate 配置文件发生更改时才能构建其配置。再说一次,我建议你使用 NHibernate 的默认 hibernate.cfg.xml 配置文件,这样你就不需要在更新到来时一遍又一遍地部署你的 app.config 文件。
我希望这有帮助!如果您需要更多信息,请告诉我。