首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >n-tiers & ORM &如何实现ORM

n-tiers & ORM &如何实现ORM
EN

Stack Overflow用户
提问于 2011-06-10 01:02:08
回答 3查看 892关注 0票数 1

通常,我使用带有.net Framework3.5的VS.NET 2008开发分层(DAL、BLL、UI)的应用程序。对于数据访问,我使用Enterprise Library 4.1,并使用log4net进行日志记录。

我听说过ORM,在我的编程中实现ORM很有趣,该怎么做呢?这对性能有影响吗?

我知道两种对象模型,NHibernate和实体框架。从www.ormbattle.net NHibernate的性能并不好,实体框架我认为它太‘年轻’,不能在VS.NET 2008中使用。

LINQ2SQL呢?它是一种对象关系管理工具吗?但与传统的方法相比,性能太慢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-10 01:31:10

也许值得看看一些所谓的“微对象关系管理”解决方案,如DapperPetaPocoMassive,它们是NHibernate、Subsonic、Linq2Sql、EF等的替代品。

This answer在使用Subsonic vs PetaPoco的经验中有一些有洞察力的信息。

票数 2
EN

Stack Overflow用户

发布于 2011-06-10 01:19:25

Linq2Sql不再被开发。他们可能永远不会摆脱它,但他们不再添加它;为了支持MSEF,它已被弃用。

NHibernate的性能可能和任何ORM一样好。请记住,大多数ORM使用大量反射来创建对象、获取和设置属性、摘要Linq表达式等。如果不恢复到ADO.NET,您将无法摆脱它。

然而,NHibernate在其延迟加载的"N+1“代理上确实存在一个严重的"PersistentBag”问题。当NH从数据实例化一个包含子实体集合的实体时,它的子集合被设置为一个代理对象,该对象实际上并不保存数据;它只知道如何进行更多的调用来获取数据。当您请求子集合的每个元素时,NHibernate会再次调用DB。这导致了到DB的"N+1“总往返,如果您自己设计DAL,您可能会在两个往返中处理相同的情况;一个用于主对象,另一个用于子集合。

如果您理解这个问题,可以通过为子元素编写第二个查询来解决这个问题,而不是让NHibernate为您初始化它们。你仍然可以让它懒惰地工作。

票数 2
EN

Stack Overflow用户

发布于 2011-06-10 14:26:03

您可以从http://bltoolkit.net开始。良好而快速的数据访问库,具有一些很好的ORM特性。非常适合从纯ADO.NET迁移遗留代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6296555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档