我可以选择哪些标准的ORM?

时间:2010-12-28 08:31:40

标签: c# .net asp.net orm wiki

问:这个问题是关于如何为我的网络应用程序设计或选择方便的ORM。 在开始新的Web应用程序时,我认为特定ORM的标准比我的项目或案例(Web应用程序)的另一个更好?

我的问题的另一部分:当我开始任何Web应用程序时,我使用三层:

  1. DB层(包含 连接,并处理CRUD 运营)
  2. Managers图层(数据访问 Layer)我的每个表的一个类 db(与...松散耦合) 前一层)它包含CRUD 特定表的操作 以及其他所需的操作。
  3. 界面层..
  4. 我使用对象数据源。这被视为ORM(作为一个概念),或者我理解这个概念是错误的。

    注意:我还是这个领域的初学者,每天我都会更多地了解网络开发。 我想要解释这一点。

    提前致谢。

8 个答案:

答案 0 :(得分:8)

至于ORM,这都是关于品味的。 nhibernate和Entity框架是最常见的框架。

答案 1 :(得分:5)

您无法找到具体的选择标准 - 这是品味和偏好的问题,但您可以找到比较特征here

答案 2 :(得分:3)

我将Devart LinqConnect用于中小型项目(特别是对于Web项目),我将Entity Framework用于大型项目。这些产品方便灵活,可让您快速入门。 LinqConnect包括允许使用Oracle,MySQL,PostgreSQL,SQLite的提供程序。我使用第三方提供商进行实体框架定制。

答案 3 :(得分:1)

如前所述@MikeAinOz,Entity Framework是一个良好的开端,您也可以在其中与其他数据库建立联系。这个示例也是关于程序层如何的一个很好的起点:

http://layersample.codeplex.com/releases/view/47627

答案 4 :(得分:1)

最着名的是nhibernate和EF,我个人更喜欢EF,它的速度比nhibernate好(通过linq),而且对于使用EF我认为Code First是最有用的启动。

为了选择哪个ORM(在EF和nhibernate之间)你可以看到Ayende Rahien的this blog,他知道nhibernate的优点,在这篇文章中他说nhibernate的成熟度更好但linq2EF优于nhibernate,简单我可以给你的样品是: 你有一个2级的主要细节,在nhibernate中你应该用hql从特定的项目中检索具有特定条件的项目,但是在EF中你可以做到这一点,同样在EF我们有Entity Functions被引导以解决问题,并且我希望将来会更有用。

答案 5 :(得分:1)

我正在阅读一本关于hibernate的书,这些人是编写hibernate的人,而且是广义的定义,将关系模型映射到对象模型(将外键转换为包含的对象[s])的任何东西都是ORM。 / p>

作者将ORM放在不同的类别中,类似于Nhibernate属于完整ORM的类别,它在运行时为ex ...生成SQL。

LLBGen等其他一些工具需要通过连接到DB来创建静态dll,然后再使用它们。

当选择ORM时,你应该看看用户群,如果ORM是活动的,ex..new版本和快速bug修复,晚期Hibernate可能是最广泛使用的,在.net中有Fluent Nhibernate可以在没有xml文件的情况下进行配置,hibernated为此使用带注释的类。

就我个人而言,我建议你使用基于Hibernate的ORM,在ROR中,活跃的记录是我猜的标准......

答案 6 :(得分:1)

对于Microsoft世界坚持使用ado.net实体框架
对于开源世界坚持使用nhibernate。

答案 7 :(得分:1)

关于简单的数据库访问,似乎有很多意见,哪种是访问数据库的最佳方式。

我目前正在使用NHibernate,它在MS Sql和MySql中运行得非常好。我找到了一个博客条目,展示了如何使用Nhibernate here连接到MYSQL。

我的决定因素是查看您将要使用的数据库,然后从那里做出决定。 Scott Guthrie宣布使用实体框架版本4的Code First Framework。虽然我知道Entity Framework 4.0适用于Mysql(link),但我不确定Code First。可以找到代码优先开发教程here

最终我认为他们都做了相同的工作,虽然如果我开始看ORM并想要一些简单的东西,我可能会采用Code First方法,因为它看起来很容易。但我没有经验。我只读过它。

希望这有帮助。