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