我有点惭愧地说我从未使用过ORM; 你可能还记得我的大部分职业经历都是使用经典ASP和小.NET进行攻击,而我只是维护.
为了我自己的职业生涯以及为工作中的新项目做准备(最终在.NET中完成!)我正在考虑在我的技能组中添加一个ORM - 作为受虐狂我是我也会看TDD而我正忙于这个项目.
无论如何,我使用.NET 3.5作为项目(或计划,反正)所以我试图决定我想要选择什么ORM; 就像我说我对它们并不熟悉,但我一般都知道它们应该做什么,以及它们是如何做到的.我的选择基本上取决于NHibernate或LINQ/Entity Framework.我没有使用过任何东西,但我看过一些LINQ2SQL和NHibernate的演示.
NHibernate看起来总体上更健壮(Linq2Sql甚至不是"真正的"ORM)以及在ALT.NET社区中大量使用,我想要更多地探索它.但是,EF是微软的产品,因此,大多数开发团队都会大量使用EF,他们只使用微软推出的任何产品,而不会考虑任何其他选择.
我已经听说了关于EF的好事和坏事,但是如果/当我在一个真正的开发团队的公司找到一份更好的工作时,我想选择能给我一个良好基础的东西以及对其他雇主好看的东西.
编辑:我应该补充一点,如果在选择ORM时有任何问题,应用程序将不得不处理现有的数据库.
编辑(02/15/2009 6:48 PM):它将使用的唯一数据库是SQL Server 2005 Standard,在Windows Server 2003上运行.鉴于这是一个工作项目,我的目标是选择一些赢得的东西我需要很长时间才能加快速度(因为我需要提高工作效率并且"学习新工具"对管理来说看起来不太好)但是比滚动我自己的DAL要好一些.当时我还没有确定应用程序是智能客户端还是ASP.NET应用程序,但其中的一部分很可能是用ASP.NET MVC完成的.
我会推荐nhibernate - 因为它是开源的,并且有一个非常活跃的社区帮助很容易获得.一个很好的起点是NHibernate常见问题解答,它包括从初学者的帖子到非常先进的概念.通过阅读和关注准备您的系统为NHibernate和您的第一个基于NHibernate的应用程序.
我工作的所有雇主都使用NHibernate for .NET中的ORM和Hibernate for Java中的ORM - 所以你应该从学习NHibernate中受益匪浅.