(这必须是常见问题解答,因此我希望它会被重复关闭,但我找不到包含概述 问题等的问题。)
当选择 .net 系统的ORM时,有人会考虑如何是ORM的上述已解决的,这是.net系统常用的。
(当我说“考虑使用ORM”作为.net问题时,我应该在答案中链接到巫婆堆栈溢出问题)
是否希望提供新答案并获得赏金?
答案 0 :(得分:9)
这是我在选择.NET ORM时指出的主要问题/答案:
NHibernate, Entity Framework, active records or linq2sql
我在答案中放了一堆“重复”类型的问题。因此,您可以从各种不同的角度进行大量的阅读。
我也会尝试回答您的具体问题:
有人应该考虑什么 为.net系统选择ORM?
您想确保它可以使用 你的数据库。如果你的数据库 设计是最先进的15年 以前,许多较小和/或较不成熟 ORM不适用于您的缺乏 关键,奇怪的关系等。
您想确保它可以使用 数据库供应商。 SQL Server 支持几乎总是如此 可用,但其他数据库可能或 各种ORM可能不支持 (MYSQL似乎是第二位的 通常支持的数据库)。
如果要生成数据库 根据您的.NET类,您需要 确保你的ORM支持。
如果你想要表演,我想你 远离糟糕的表现 那些,但那些永远不会成为一个 前五名,所以只要你去 一个主流的ORM 街头信誉,你可能没事 这里。
您需要确保它具有您需要支持的功能:http://ayende.com/Blog/archive/2006/05/12/25ReasonsNotToWriteYourOwnObjectRelationalMapper.aspx
考虑供应商锁定以及如何操作 很容易你可能会或可能不会 逃避它(对于两个数据库 供应商和ORM供应商。)
考虑您想花多少钱。
考虑您想要的代码 代。
考虑您想要进行单元测试的内容 支持。
考虑你想要多长时间 花钱研究各种 选项。
考虑存在的社区 在ORM周围。
要记住很多事情。我相信我能想到更多。最后,很多情况都是情境性的,你需要自己决定什么对你和你的项目最有利。
ORM如何解决上述问题 这是.net的常用用法 系统
我所知道的唯一一个.NET ORM满足了.NET项目可能拥有的所有需求(减去更多不起眼的数据库供应商)是NHibernate。它已在许多不同的场景中与许多“遗留”数据库进行了测试。
答案 1 :(得分:2)
ORM Battle
整个网站致力于分析和比较各种.NET ORM(对象关系映射)产品!
请记住,即使ORMBattle网站只比较7或8个ORM(虽然它确实比较了,但它似乎相当彻底,但见下面的免责声明)。
根据SharpToolBox website,大约有40个ORM可用! ORM产品列表及其在SharpToolBox网站上的描述应该会给你一个良好的开端。看这里: SharpToolBox Search Results for Object-Relational Mapping
考虑到几乎每个开发人员以及每个应用程序的数据访问需求都会有所不同,找到所有开发人员之间的完全比较将很困难。这可能是因为在ORM世界中没有“一刀切”的产品,因此存在40多种不同的ORM产品。
另外,请记住,ORM产品之间的任何比较都可能是“有缺陷的”,因为您无法始终确保不同ORM产品的各种功能是为完全相同的目的而设计的。 AJ对这个答案的评论链接到blog post Ayende Rahien,当ORMBattle将NHibernate与其他ORM进行比较时,他正好描述了这种现象。
我认为最好的方法是查看基准测试,并阅读每个ORM的描述,但不要从字面上理解这些内容,而是根据您自己的应用程序应该做的事情来解释这些数字。例如,如果您的应用程序主要一次读取和写入数据库记录,那么您可能会使用与需要批量处理数据库记录的应用程序完全不同的ORM产品。
答案 2 :(得分:0)
我不是.net开发人员,但您应该查看nHibernate。它是最先进的ORM for Java的.net版本。我确信它对.net来说也是一个很好的解决方案,因为它使得映射对象非常容易,但仍然足够强大,可以将对象映射到几乎任何类型的sql架构。
答案 3 :(得分:0)
在NHibernate或Entity Framework之间进行选择。 NHibernate更具可扩展性,通常功能更丰富。实体框架使用丰富的功能集更好,更易于使用。
两个框架都很棒,实体框架比NHibernate有一个很大的优势:它更容易上班,启动阶段可能非常困难。 EF做得更好。但是,在某些地区,NHibernate是优越的,例如当谈到扩展框架时,NHibernate提供了更多选项
最后,接听电话。两个人中的任何一个都不会让你失望。