使用哪种ORM:Telerik Open Access VS Subsonic VS Linq to SQL VS Active Record

8
我们正在考虑使用ORM,我想听听一些意见和比较。
我们对ORM的基本标准是:易于使用/配置(学习曲线短),灵活性强,可以将其抽象化,易于维护。
以下是我们正在考虑的ORM列表及我们的初步印象:
1. Open Access - 对于简单的东西来说似乎非常容易,但似乎没有太多的灵活性,成本不是问题,我们已经拥有它。 2. Ling to SQL - 看起来非常简单易用,但缺少一些功能。 3. Active Record - NHibernate变得简单了。 4. SubSonic - 看起来非常丰富,但我们还没有真正玩过。
以下是我们已经查看并排除的ORM:
1. Entity仍处于测试版。 2. NHibernate具有太高的学习曲线(我们没有三周时间去学习它)。
7个回答

6

我建议你看一下DataObjects.NET (http://www.x-tensive.com)。它功能丰富且易于使用。但是,它完全将你绑定在你的对象模型上,因为它根据你的对象模型来决定数据库结构应该是什么样子的。话虽如此,如果你想忽略数据库的存在,它还是很不错的。我们已经使用了多年,并取得了巨大的成功。


4
我们目前使用的是SubSonic(2.0.3),它绝对是一个救星。我强调一下它是多么棒。但是,由于各种原因,我们现在考虑切换到NHibernate或Entity。以下是我的优缺点:
优点: - 非常简单易用。 - 拥有大量实用的工具和功能。 - 使用“约定大于配置”哲学,所以配置很少。只要按照它想要的方式进行操作即可。
缺点: - 数据库设计与域设计紧密耦合。如果更改数据库,就需要更改代码/域设计。 - 默认情况下,SubSonic为所有数据访问使用ActiveRecord模式,而非仓储模式,这使得“抽象掉它”更加困难。(虽然我相信在v3.0中,您可以交换默认的ActiveRecord模板以使用仓储模式)。 - 关于SubSonic未来的消息传言很多。但是传言只是传言。

3

对于所有成对的便士可能值得:

如果您现在没有3周的时间来学习您选择的ORM(无论您选择哪种),当它不完全映射您认为它应该映射的内容时,您可能需要找到3周的时间在以后学习。

如果您有一个相当复杂的模型,ORM是非微不足道的。您最终将需要了解您的ORM如何工作,以便您告诉它按照您想要的方式映射事物。

当然,这又是另一种说“知道自己的工具”的方式。 :)


这就是为什么其中一个要求是具备抽象能力,这样如果某些东西出了问题,我们就可以自己编写代码。 - Bob The Janitor

1
使用 T4 模板创建自己的模板。互联网上有几种已经建立的模式,特别是针对 T4 模板。 了解 T4 还将使您能够编写比宏范围更大但比编写自定义应用程序以生成所需脚本的范围更小的项目。 希望这可以帮助到您!

1

大多数人会有一两个工具的经验,但很少有人接触到全部。我建议使用每个你最喜欢的ORM工具进行概念验证。为每个工具设置好环境,每个ORM工具所花费的时间最多不要超过n小时(n = 你认为合理的时间)。你不需要实现整个对象模型,只需实现一个功能子集即可。

当你完成后,你将通过设置和使用它们来了解所有工具。然后你可以撰写一个总结报告,团队可以决定哪个工具具备最佳的痛点与特性的比率。


0
如果您没有使用Telerik控件,那么LINQ to SQL应该是选择快速学习的一个 - 网络上有大量不同的教程、视频和书籍。

0

我非常赞同BryCoBat的观点(已点赞)。我想补充一点,如果你已经拥有Open Access,那么公司很可能已经有人在内部非常熟悉它,包括你自己领域中用于解决简单和复杂任务的代码示例。换句话说:使用你所知道的。


我们拥有开放访问权限,因为我们使用了Rad控件并获得了完整的Telerik套件。 - Bob The Janitor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接