在我的学徒期间,我将NHibernate用于一些较小的项目,这些项目主要是我自己编码和设计的。现在,在开始一些更大的项目之前,讨论了如何设计数据访问以及是否使用 ORM 层。由于我仍处于学徒阶段,并且仍然认为自己是企业编程的初学者,因此我并没有真正尝试提出自己的观点,即使用对象关系映射器到数据库可以大大简化开发。开发团队的其他编码人员比我更有经验,所以我想我会照他们说的做。:-)
但是,我不完全理解不使用 NHibernate 或类似项目的两个主要原因:
- 可以使用 SQL 查询构建自己的数据访问对象,然后将这些查询复制到 Microsoft SQL Server Management Studio 之外。
- 调试 ORM 可能很困难。
所以,当然我可以用很多SELECT
s 等来构建我的数据访问层,但是在这里我错过了自动连接、延迟加载代理类以及如果表获得新列或列获得的维护工作量较低的优势重命名。(更新大量SELECT
,INSERT
和UPDATE
查询与更新映射配置并可能重构业务类和 DTO。)
此外,如果您不太了解该框架,使用 NHibernate 可能会遇到无法预料的问题。例如,这可能是信任 Table.hbm.xml,您在其中设置了要自动验证的字符串长度。但是,我也可以想象一个“简单”的基于 SqlConnection 查询的数据访问层中的类似错误。
最后,上面提到的那些论点真的是一个很好的理由不将 ORM 用于基于数据库的非平凡的企业应用程序吗?他们/我可能错过了其他论点吗?
(我可能应该补充一点,我认为这就像第一个需要团队合作的基于 .NET/C# 的“大型”应用程序。在 Stack Overflow 上被视为非常正常的良好实践,例如单元测试或持续集成,是非- 到现在为止。)