【发布时间】:2012-06-18 15:17:24
【问题描述】:
我需要为一个项目选择一个 ORM,而我只有一些 NHibernate 经验。我一直在阅读 StackOverflow 的问答,与我的需求最相似的是What ORM for .net should I use?,但我想有一个更适合当前产品的答案(链接来自 2009 年),并且还考虑到了以下几点我的项目。
对我来说最简单的解决方案是使用 NHibernate,因为它成熟、功能丰富并且我已经使用过它,但我更愿意为项目选择最佳选项,即使我必须再次“学习”。
该项目将作为与 SAP 通信的核心启动。核心必须支持独立和/或相互依赖的模块,并且每个模块都可能需要使用来自数据库的自己的数据。最后一步是实现我们使用的 SAP 部分。我需要的特征是上一个链接中的特征,这里还有一些需要注意的事项:
我希望能够拆分数据访问层,以便拥有一两个模块的用户不需要全部。
设计师将不胜感激。
从大约 20-30 个表开始,几年内,这个数字将增长到数百个。
每个表的寄存器数量从两个或三个到 150000+(非常少)不等。
它不需要是一个单一的产品解决方案。 NHibernate 和 Devart Entity Develop 等组合也受到欢迎。
这个项目的团队也将有学生必须学习 C Sharp,他们中的一些人可能不知道 ORM 到底是什么,所以如果它很简单,或者至少是这样,那就太好了,基本的东西不是很复杂(混合大量的 lambda、反射、扩展方法等)。
最后一个不是很重要。我希望这足够具体以避免被关闭(我链接的问题仍然开放)。
编辑: - 这是一个桌面应用程序。 - 文档和社区也非常重要。
【问题讨论】:
-
您从未解释过为什么您确信 ORM 是适合您的解决方案。另外,这是一个网络项目还是桌面项目?
-
我认为 ORM 是正确的解决方案,主要是因为它必须与不同的数据库一起工作。
-
Jeff Atwood 有一篇很棒的文章,介绍了为什么 ORM 通常不是一个好的解决方案。它链接到一篇有更多细节的长文。看一看,知道你正在进入什么:codinghorror.com/blog/2006/06/…
-
@ashes999 当然,ORM 会带来一些问题,但是文章日期是 2006 年 6 月 26 日。从那以后情况发生了变化,如果我必须协调 10 年以上没有经验的学生和程序员的工作在 FoxPro 中曾经有代码和查询在同一个“屏幕”文件中的经验,现在将开始使用 C#,我更喜欢强加一种访问数据库的方法,我喜欢 ORM 方法。
-
好吧,如果你想这么想,那就去做吧。 ORM 仍然存在该文章和帖子中概述的许多问题(我从 2010 年开始尝试使用现代 ORM)。只需了解您要进入的内容,这不是灵丹妙药。