需要的建议:O/R 映射器 [重复]

Posted

技术标签:

【中文标题】需要的建议:O/R 映射器 [重复]【英文标题】:Recommendation needed: O/R mapper [duplicate] 【发布时间】:2010-11-11 11:33:27 【问题描述】:

可能的重复:What ORM frameworks for .NET Do You Like Best?Best way to access a SQL Server database using C# .Net

你好,

有人可以为 SQL Server 2008/.NET 推荐一个好的 O/R 映射器吗?

我正在寻找它来支持存储过程而不仅仅是表。

谢谢!

【问题讨论】:

我喜欢 Linq2SQL,但有些人会抱怨它已被弃用。 @leppie :任何此类投诉都是错误的。事实上,它只是针对 .NET 4.0 进行了更新。 @Andrew Barber:该声明的参考?我相信他们说他们没有做更多的工作。如果确实如此,为什么仍然存在这些微不足道的错误? @leppie 搜索“linq to sql .net 4.0”,您会发现大约 50 万条结果,其中很多都详细说明了新版本中的变化。 @Andrew Barber:谢谢,仍然不知道他们为什么不费心修复一个小错误... 【参考方案1】:

NHibernate

Entity Framework

您会听到关于每种方法的优缺点的争论。目前我个人建议使用 NHibernate。它是两者中更成熟的一个,并且有一个非常活跃的社区致力于此。不过它确实有一个陡峭的学习曲线。

我要补充一点,EF 优于 NH 的主要特点是 EF 具有完整的 LINQ 支持。目前,NH2 作为单独的组分有部分支持。然而,NH3 Alpha 现在已经发布,它有一个更好的 LINQ 提供程序。

不过,这在很大程度上取决于您的要求。

【讨论】:

就个人而言,我再也不会靠近 NHibernate 了 :) @leppie 为什么?它是最成熟的 ORM 之一 尽管我在回答中推荐了 L2S/EF,但我认为 NHibernate 无疑也是一个很好的选择。 +1【参考方案2】:

NHibernate 是必经之路。

请参阅http://nhforge.org 和http://sf.net/projects/nhibernate 了解更多信息。

Entity Framework 和 NHibernate 的主要区别在于 Entity Framework 仅适用于 Microsoft SQL Server(Oracle 有点支持,但支持并不理想)。 NHibernate 支持许多许多数据库。

然而,它们之间存在更多差异。对comparison nhibernate "entity framework" 的查询提供了许多信息来源。

【讨论】:

这两个 ORM 之间的差异远大于支持的数据库范围。发帖人已经说过这是针对 SQL Server 2008 的。 @David Neala - 是的,你是对的。 实体框架有一系列数据库提供程序。看看这个列表:msdn.microsoft.com/en-us/data/dd363565.aspx【参考方案3】:

Linq to SQL 对您来说可能是一个不错的选择。实体框架是另一个。两者都可以满足您的要求。

从技术上讲,用于 Linq to SQL 与 SQL Server 和 .NET 的 O/R 工具将是 Visual Studio 或 SQLMetal 中的 O/R 设计器。两者都使您能够对数据以及存储过程/函数进行建模。

如果您有 Visual Studio,您只需添加一个新对象并选择 ADO.NET 实体类或 Linq to SQL 类,具体取决于您使用的类。

如果没有 Visual Studio,您可以使用 SQLMetal 命令行工具生成 L2S 类,也可以:

SQLMetal:http://msdn.microsoft.com/en-us/library/bb386987.aspx

【讨论】:

【参考方案4】:

内置linq

【讨论】:

LINQ 不是 ORM - 它是一种可以查询数据源(数据库、XML、内存中的对象等)的方法。

以上是关于需要的建议:O/R 映射器 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

可以自动更新数据库模式的 O/R 映射器?

AWS EMR 并行映射器?

数据映射器通常是啥样的?

MyBatis映射器总结

双层设备映射器 - 自定义 dm-crypt

MyBatis配置文件--mappers映射器