C# 运行什么ORM:telerik开放存取VS亚音速VS linq to sql VS活动记录

C# 运行什么ORM:telerik开放存取VS亚音速VS linq to sql VS活动记录,c#,.net,orm,data-access-layer,C#,.net,Orm,Data Access Layer,我们正在研究使用ORM,我想了解一些意见/比较 我们对ORM的基本标准是:易于使用/配置(学习曲线短)、灵活、能够将其抽象出来、易于维护 下面列出了我们正在研究的ORM以及我们的初步印象 开放存取——对于简单的东西来说似乎很容易,但似乎没有太多的灵活性,成本不是我们已经拥有的问题 Ling to SQL—看起来使用和配置非常简单,但缺少一些功能 活动记录-使NHibernate变得简单 亚音速-看起来功能非常丰富,但没有真正发挥它太多 以下是我们已经查看并排除的ORM 实体仍处

我们正在研究使用ORM,我想了解一些意见/比较

我们对ORM的基本标准是:易于使用/配置(学习曲线短)、灵活、能够将其抽象出来、易于维护

下面列出了我们正在研究的ORM以及我们的初步印象

  • 开放存取——对于简单的东西来说似乎很容易,但似乎没有太多的灵活性,成本不是我们已经拥有的问题
  • Ling to SQL—看起来使用和配置非常简单,但缺少一些功能
  • 活动记录-使NHibernate变得简单
  • 亚音速-看起来功能非常丰富,但没有真正发挥它太多
  • 以下是我们已经查看并排除的ORM

  • 实体仍处于测试阶段
  • NHibernate的学习曲线非常长(我们没有3周的时间来学习)

  • 对于所有成对的硬币,它可能值得:

    如果你现在没有3周的时间来学习你选择的ORM(无论你选择哪种),你可能需要3周的时间来学习它,当它不能准确地映射出你所认为的东西时

    如果你有一个中等复杂的模型,ORM是不平凡的。你最终需要知道你的ORM是如何工作的,这样你就可以告诉它以你想要的方式映射事物


    当然,这是“了解你的工具”的另一种说法

    大多数人对其中的一两种都会有一点经验,但很少有人会接触到所有这些。我建议您对每一个最喜欢的产品进行概念验证。设置每个对象,每个ORM工具花费的时间不超过n小时(n=您决定的合理时间)。您不必实现整个对象模型,功能子集就可以了


    当你完成的时候,你已经完成了设置和所有这些的一些使用。然后你可以写一份验尸报告,然后团队可以决定哪一个具有最佳的疼痛特征比。

    我非常同意布莱科巴特的观点(赞成票)。我还想补充一点,如果您已经拥有OpenAccess,那么公司内部很可能有人已经非常熟悉它,包括您在自己的领域中查看的用于琐碎和非琐碎任务的代码示例。换句话说:使用你所知道的。

    我们目前使用亚音速(2.0.3),它绝对是救命稻草。我怎么强调都不过分,它有多棒。然而,我们现在正考虑出于各种原因(可能是NHibernate或Entity)放弃它。以下是我的优点和缺点:

    优点:

    • 设置和使用非常简单
    • 很多很棒、有用的工具和功能
    • 使用“约定优先于配置”的理念,因此配置很少。它“只是起作用”。(只要你按照它想要的方式做事……:)
    缺点:

    • 数据库设计与域设计紧密耦合。在数据库中进行更改,您需要更改代码/域设计
    • 默认情况下,亚音速对所有数据访问使用ActiveRecord模式,而不是Repository模式,这使得“抽象”数据变得更加困难。(尽管我相信在v3.0中,您可以替换默认的ActiveRecord模板以使用存储库模式)
    • 许多关于亚音速未来的悲观谣言四处流传。但谣言只是:谣言

    我想你应该看看DataObjects.NET()。它的功能丰富,使用非常简单。不过,它确实将您与对象模型联系在一起,因为它决定了数据库结构应该基于对象模型的外观。这就是说,如果您希望能够忽略数据库的存在,这是非常好的。我们已经使用了多年,并取得了巨大成功。

    使用T4模板创建您自己的模板。互联网上有几种既定模式,特别是T4模板。 了解T4还将允许您编写可能比宏的作用域大、但比编写自定义应用程序的作用域小的项目,以生成所需的脚本。
    希望这有帮助

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

    这就是为什么要求之一是能够将其抽象出来,这就是为什么有些东西不能正常工作的原因,我们可以自己编写代码。我们有开放的访问权限,因为我们使用rad控制,并拥有完整的Telerik套件