运行啥 ORM:telerik Open Access VS Subsonic VS linq to sql VS Active Record
Posted
技术标签:
【中文标题】运行啥 ORM:telerik Open Access VS Subsonic VS linq to sql VS Active Record【英文标题】:What ORM to Run: telerik Open Access VS Subsonic VS linq to sql VS Active Record运行什么 ORM:telerik Open Access VS Subsonic VS linq to sql VS Active Record 【发布时间】:2010-10-08 15:46:53 【问题描述】:我们正在研究使用 ORM,我想要一些意见/比较
我们对 ORM 的基本标准是:易于使用/配置(学习曲线短)、灵活、能够将其抽象出来、易于维护
这里列出了我们正在研究的 ORM 以及我们的初步印象
-
开放存取——对于简单的东西来说似乎真的很容易,但似乎没有很大的灵活性,成本不是我们已经拥有的问题
Ling to SQL - 使用和配置看起来非常简单,但缺少一些功能
Active Record - NHibernate 变得简单
SubSonic - 看起来功能非常丰富,但并没有真正玩过它
这里是我们查看并排除的 ORM
-
实体仍处于测试阶段
NHibernate 有很长的学习曲线(我们没有 3 周的时间来学习它)
【问题讨论】:
【参考方案1】:使用 T4 模板创建您自己的模板。 Internet 上有几种已建立的模式,尤其是对于 T4 模板。 了解 T4 还可以让您编写出可能具有比宏更大范围但比编写自定义应用程序来生成所需脚本的范围更小的项目。 希望这会有所帮助!
【讨论】:
【参考方案2】:如果您不使用 Telerik 控件,则应该选择 LINQ to SQL 进行快速学习 - 网络上有大量不同的教程、视频、书籍。
【讨论】:
【参考方案3】:我想说你应该看看 DataObjects.NET (http://www.x-tensive.com)。它功能丰富且非常易于使用。但是,它确实将您与您的对象模型联系在一起,因为它根据您的对象模型的外观决定数据库结构应该是什么。话虽如此,如果您希望能够无视数据库的存在,那就太好了。我们已经使用它多年并取得了巨大的成功。
【讨论】:
【参考方案4】:我们目前使用的是 SubSonic (2.0.3),它绝对是救命稻草。我不能强调它有多棒。但是,由于各种原因(可能是 NHibernate 或 Entity),我们现在正在考虑放弃它。这是我的优点和缺点:
优点:
设置和使用非常简单。 许多非常有用的工具和功能 使用“约定优于配置”的理念,因此配置很少。它“正常工作”。 (只要你按照它想要的方式做事...... :))缺点:
您的数据库设计与您的域设计紧密耦合。在您的数据库中进行更改,您需要更改您的代码/域设计。 默认情况下,SubSonic 使用 ActiveRecord 模式进行所有数据访问,而不是 Repository 模式,这使得“抽象”变得更加困难。 (虽然我相信在 v3.0 中您可以更换默认的 ActiveRecord 模板以使用存储库模式)。 很多关于 SubSonic 未来的悲观谣言四处流传。但谣言就是这样:谣言。【讨论】:
【参考方案5】:我非常同意 BryCoBat(赞成)。我还想补充一点,如果您已经拥有 Open Access,那么公司内部的某个地方很可能已经有人对它非常熟悉,包括您在自己的域中查看的用于琐碎和非琐碎任务的代码示例。换句话说:使用你所知道的。
【讨论】:
我们拥有开放访问权限,因为我们使用了 rad 控件并获得了完整的 Telerik 套件【参考方案6】:大多数人对其中的一两个都有一些经验,但很少有人会接触到所有这些。我建议对你最喜欢的每一个进行概念验证。设置好每一个,每个 ORM 工具花费的时间不超过 n 小时(n = 你认为合理的时间。)你不不必实现整个对象模型,功能子集就可以了。
当您完成时,您将完成所有设置和一些使用。然后,您可以编写一个事后分析,团队可以决定哪个具有最佳的痛苦与特征比率。
【讨论】:
【参考方案7】:对于所有成对的便士来说,它可能是值得的:
如果您现在没有 3 周的时间来学习您选择的 ORM(无论您选择哪个),您可能需要找到 3 周的时间来学习它,因为它不能准确映射某些东西你怎么想的。
如果您有一个中等复杂的模型,ORM 就很重要。你最终需要知道你的 ORM 是如何工作的,这样你才能告诉它以你想要的方式映射事物。
当然,这完全是“了解你的工具”的另一种说法。 :)
【讨论】:
这就是为什么其中一项要求是能够将其抽象出来的原因,即为什么有些东西不能正常工作,我们可以自己编写代码。以上是关于运行啥 ORM:telerik Open Access VS Subsonic VS linq to sql VS Active Record的主要内容,如果未能解决你的问题,请参考以下文章
“提交已在进行中”尝试在 Telerik OpenAccess ORM 中保存更改