【发布时间】:2011-03-17 18:42:12
【问题描述】:
使用 OR-mapper 有意义吗?
我将那里的这个问题放在堆栈溢出上,因为这是我所知道的最好的地方,可以找到愿意提供帮助和意见的聪明的开发人员。
我的推理如下:
1.) SQL 属于哪里?
a.) 在我参与的每个专业项目中,数据的安全性一直是一项关键要求。存储过程为控制访问和审计提供了一个天然网关。
b.) 生产中的应用程序问题通常可以在表和存储过程之间解决,而无需推出新版本。
2.) 如何控制生成的 SQL?我相信解析树可以生成高效的 SQL。 我有相当多的在 SQL-Server 和 Oracle 中优化 SQL 的经验,但如果我不必再做一次,我不会感到受骗。 :)
3.) 如果我从存储过程中获取数据,使用 OR-Mapper 有什么意义?
我使用了带有本地通用数据访问层的存储库模式。 如果需要缓存一个集合,我会缓存它。我也有在小型 CRUD 应用程序上使用 EF 的经验,以及帮助调整遇到性能问题的 NHibernate 应用程序的经验。所以我有点偏见,但愿意学习。
在过去的几年里,我们都听到了很多受人尊敬的开发人员提倡使用特定的 OR-Mapper(实体框架、NHibernate 等)。
谁能告诉我为什么有人应该迁移到 ORM 来进行大型项目的主流开发?
编辑:http://www.codinghorror.com/blog/2006/06/object-relational-mapping-is-the-vietnam-of-computer-science.html 似乎对此话题进行了激烈的讨论,但已经过时了。
另一个编辑: 似乎每个人都同意将存储过程用于重型企业应用程序,因为它们具有性能优势以及能够将编程逻辑添加到更接近数据的位置。
我发现支持 OR 映射器的最有力论据是开发人员的生产力。
我怀疑 ORM 运动的一大动机是开发人员倾向于保持与持久性无关(不管数据是在内存中 [除非缓存] 还是在数据库中)。
对于本地和小型 Web 应用程序,ORM 似乎非常节省时间。
也许我看到的最好的建议是来自 client09:使用 ORM 设置,但对数据库密集型的东西使用存储过程(当 ORM 似乎不足时也称为存储过程)。
【问题讨论】:
-
CSLA 不是 OR-Mapper。这是一个常见的误解。
-
也许这对你来说是最新的。 stackoverflow.com/questions/404083/…
标签: database nhibernate entity-framework orm linq-to-nhibernate