注意:现在有人提出这个问题,请注意日期。这个问题已接近4年,而且信息相对过时。根据我的经验,NHibernate现在相对容易使用(使用流畅的界面),实体框架是一个合法的竞争者,而像Dapper和Massive这样的MicroORMS正变得非常受欢迎。
我们正在重新编写我们的核心Web应用程序之一,最后我从管理层清楚地了解了用ORM框架替换可怕的存储过程纠结以实现我们的数据访问层。
对我来说很好。现在我必须选择一个。我用以下内容玩了一下
现在我知道NHibernate是真正的Alt.Netty选择,但问题是我和承包商合作,据我所知,他们从来没有听说过它,而且NHibernate在学习曲线方面享有盛誉。在此期间,亚音速似乎是一种更为直接的方法。我也知道Entities Framework,但我很担心它的'meh'接待和Linq to Oracle,但我很担心我几乎没有听到任何关于它的事实。
所以问题是:
更多考虑因素:
我倾向于亚力士,但我很好奇人们可能会说些什么。
答案 0 :(得分:6)
你签出了Telerik's OpenAccess ORM吗?他们最近收购了Vanatec及其ORM产品。它支持多种数据库平台(包括Oracle),LINQ支持,转发和扩展。反向映射,与Visual Studio集成,在我看来(授予我有点偏见)是LINQ to SQL的合适替代品,如果这是你正在寻找的那种“易用性”。
答案 1 :(得分:4)
NHibernate将允许您将域实体与数据层分离。它使用XML映射文件来描述关系,并使用Castle DynamicProxy来实现延迟加载的属性。
NHibernate在性能,灵活性和可配置性方面领先于其他所有人。但是,正如你所说,它很复杂。 SubSonic非常简单,但它基本上是基于您的数据库生成静态代理类,因此您不会真正拥有ORM的RM。 IMO SubSonic,L2S和Castle ActiveRecord都是DAL生成器,而不是ORM。
IMO一切都取决于您的需求。如果您正在谈论2层,那么请选择其中一个DAL生成器。它会让你移动得更快,你的模型可能不是那么复杂,你不能只是从你的数据库模式生成它。如果你有n层,我强烈推荐NHibernate。当然,学习曲线更高(它不是火箭科学,但它也不是按钮),但它实际上可以处理你需要的工作,如果你使用其中一个,你最终会做很多无论如何都要手动填充。
答案 2 :(得分:3)
CoolStorage.NET是我的推荐。如果您坚持使用.NET,那么这是最简单的功能完整解决方案。
答案 3 :(得分:3)
Checkout XmlDataMapper一个简单的免费ORM(LGPL许可证),与其他巨头相比,它的内存占用空间很小。 提供的示例项目应该足够好以便开始。
要集成XmlDataMapper,您需要做的只有4个小步骤
答案 4 :(得分:2)
我会重新考虑您对Microsoft的实体框架的评估。您可以将DevArt的DotConnect提供程序用作Oracle的解决方案,直到Oracle将来发布自己的提供程序。使用实体框架,您不会使用“Linq to Oracle”,而是使用“Linq to Entities”,这是一个更好的解决方案。
我使用Entity Framework测试读取操作时得到了非常好的结果,其中读取操作比其SqlCommand \ SqlDataReader等效快〜700%。
答案 5 :(得分:1)
考虑ORM时的问题是
当我查看.Net的ORM市场时,我发现NHibernate上有越来越多的资料
Links to helpful material about Nhibernate< - 视频,工具和最佳做法
Castle建立在NHibernate的顶部(它使用Active Record模式)
让google查看ORM是否有任何工具可以帮助您更快地发展。
如果您没有使用XML映射文件,请查看是否可以找到Fleunt映射。这应该意味着编译时检查(有些人发现这更容易调试/重构代码)
HTH
骨