实体框架与普通 ORM 有何不同?

Posted

技术标签:

【中文标题】实体框架与普通 ORM 有何不同?【英文标题】:How does the Entity Framework differ from a normal ORM? 【发布时间】:2011-04-07 20:22:54 【问题描述】:

正如标题所说:为什么包括微软在内的人都说 ORM 只是实体框架中的一个功能?它与典型的 ORM 有什么不同?对我来说,EDM 与来自 nHibernate 的 XMl 映射相同。为什么微软说这不一样?

【问题讨论】:

@halfdan - 你说得对!对我来说,这似乎就像苹果公司的营销“很棒、很棒”等;) 【参考方案1】:

将实体框架与大多数(如果不是全部)其他 ORM 区分开来的一件事是它具有三层 - 存储 模型,它是物理数据库模型(表、视图等),一个代表应用中对象的概念模型,以及这两者之间的映射层。

您可以在 EF 中进行映射,其中单个 .NET 对象映射到多个数据库表以及其他内容。您还可以将对象继承层次结构映射到在数据库表中表示它们的几种方式。

NHibernate 可以做类似的事情,肯定是在继承区域(不确定将一个 .NET 对象映射到多个表)。

几乎所有其他 ORM 只是简单地将数据库表 1:1 映射到 .NET 对象 - 没有映射和建模功能。

【讨论】:

【参考方案2】:

这确实是一种营销,但基于真正的努力。实体框架是一个 ORM,但同时它是用于数据访问的 MS 战略平台。实体框架是许多其他高级 API(如 WCF 数据服务、WCF RIA 服务、ASP.NET 动态数据等)的基础层。这些 API 也适用于其他数据源,但它们主要是为 EF 开发并与 EF 一起使用。这就是 MS 所指的不同之处。

我的观点是,很高兴看到 MS 有远见和战略,但同时我希望看到有效且强大的 ORM,而不是向我展示我不需要的功能的营销声明。

【讨论】:

这就是我的想法。这是微软的大营销。但是您能否详细介绍一下 API“......它们主要是为 EF 开发并与 EF 一起使用”我不知道 WCF“应该”使用 EF。

以上是关于实体框架与普通 ORM 有何不同?的主要内容,如果未能解决你的问题,请参考以下文章

动态类型转换实体框架 ORM

Microsoft 对实体框架中的二级缓存有何建议?

Python学习笔记八:ORM框架SQLAlchemy

转 ofbiz之entity实体写法与解析

实体框架与 NHibernate - 性能

Mybatis学习之配置文件