11

我有兴趣在即将到来的项目中使用对象关系映射包。该项目将作为一个 ASP.NET 应用程序开始,但将具有最终将与 WinForms 应用程序共享的许多功能。任何人都可以推荐一些在 ASP.NET 和 WinForms 情况下都运行良好的免费 ORM 包吗?

4

13 回答 13

11

SubSonic 没有 nHibernate 广泛;相反,它是每个表数据访问层的直接 Active Record 1 类。

其中一些功能是查询工具、执行存储过程的能力和 ASP.net 中的脚手架应用程序。您可以在 30 分钟或更短的时间内启动并运行,只需极短的学习曲线和 Config.app 文件中的最少配置。

于 2008-10-15T20:24:26.030 回答
6

我总是推荐Castle ActiveRecord它是NHibernate之上的一层。它在您提到的两种环境中都非常有效。

于 2008-10-15T20:18:01.987 回答
5

nHibernate 对我有用,但这一切都取决于你所追求的。很多人不想走完整的 DDD 和单元测试路线。他们只是想要一些简单的东西来将他们的数据库映射到对象以使代码更好一点。如果是这样的话,那么看看 Subsonic,它可能更容易上手。

于 2008-10-15T20:18:42.827 回答
5

我喜欢Fluent NHibernate,它允许您在强类型 C# 中创建映射,而不是使用普通的 NHibernate XML 文件。它也允许您混合和匹配(您可以在代码和 XML 中进行映射)。

这里有一篇不错的入门文章。

于 2009-11-05T14:12:58.470 回答
4

试试,亚音速

你也可以使用 Linq2Sql ORM。

于 2008-10-15T20:11:16.883 回答
3

休眠

于 2008-10-15T20:08:39.523 回答
2

我没有简单地调查 ActiveRecord,因为根据独立的serveys,它的执行速度不如许多其他 ORM,并且它没有完整的 Linq 实现。

DataObjects.NET 要求您的所有实体都派生自特殊类,但作为交换,您可以获得可观的性能和好东西,例如内存存储提供程序和最完整的 Linq 实现。

我花了一个下午筛选 DBLinq 的源代码。我的观点是它不成熟(Linq-To-SQL 的许多功能根本没有实现),我不建议将它用于生产系统。

那么……如果您正在寻找免费、快速、开源、符合 LINQ 的 ORM,那么 DataObjects.NET 是一个非常安全的选择。

于 2009-11-05T14:01:52.360 回答
2

出 XmlDataMapper一个简单的免费 ORM(LGPL 许可证),与其他巨头相比,它的内存占用较低。提供的示例项目应该足以开始使用。

要集成 XmlDataMapper,您只需 4 个小步骤

  1. 为表创建业务实体/DTO
  2. 使用表和 DTO 之间的映射信息创建一个 XML 文件。
  3. 在配置中指定 DTO 和 xml 文件。
  4. 只需调用 DTOConverter.Convert(dataReader) 和其他此类方法即可将您的数据库记录转换为 DTO / 业务实体
于 2010-02-06T12:40:04.483 回答
1

尝试从http://www.dbframeit.com获得的 dbFrameIT 。它非常易于使用,并提供免费的个人使用许可证。

于 2011-10-11T23:50:57.340 回答
0

我已经为少数 ASP.NET 应用程序以及 WinForms 应用程序使用 SubSonic 大约一年了。它非常容易上手,而且我还没有因为选择它而“陷入困境”——几乎总有一些方法可以做你需要的事情,通常很容易。我估计它已经将我们的开发时间缩短了 30%。不是真正的 ORM 工具,但可以极大地提高生产力。

于 2008-11-19T02:16:52.510 回答
0

请参阅此ORM 工具列表“.Net”

它包含所有著名的 .Net ORM 工具

于 2009-05-10T10:35:13.273 回答
0

我使用 NHibernate 和 NHibernate 注释。它运行良好 - 没有映射文件(entity.xml)。不幸的是,您必须在需要一个很小的 ​​xml 文件的 Log4net 上。

于 2009-11-27T12:24:08.687 回答
0

Habanero,伟大而强大的 ORM。它是免费的(LGPL 许可),可与 .net 2.0 一起使用(这对我来说非常重要),并且具有从数据库生成模型的强大工具(具有自定义类和属性名称、自定义验证等)

于 2009-12-25T15:57:55.953 回答