正如标题所说:为什么人们包括微软都说ORM只是Entity Framework中的一个功能?它与典型的ORM有什么不同之处?对我来说,EDM与nHibernate中的XML映射相同。为什么微软说这不一样呢?
Entity Framework与大多数(如果不是所有)其他ORM最大的区别在于它有三个层次 - 一个存储模型,它是物理数据库模型(表格,视图等),一个概念模型,它代表您应用程序中的对象,以及这两者之间的映射层。在EF中,您可以进行映射,其中单个.NET对象映射到多个数据库表和其他内容。您还可以将对象继承层次结构映射到多种表示这些层次结构的数据库表中。NHibernate也可以做类似的事情,特别是在继承领域(不确定是否涉及将一个.NET对象映射到多个表)。几乎所有其他ORM都只是将数据库表格更或少地映射为.NET对象 - 没有映射和建模功能。
这实际上是一种基于真实努力的营销。Entity Framework 是一个 ORM,同时也是微软数据访问战略平台。Entity Framework 是许多其他高级 API(如 WCF 数据服务、WCF RIA 服务、ASP.NET 动态数据等)的基础层,这些 API 也可以与其他数据源配合使用,但它们大多数是为 EF 开发并与 EF 一起使用的。这就是微软所指出的区别。我的看法是,能够看到微软有远见和战略是很好的,但我更想看到的是一个可靠且强大的 ORM,而不是向我展示我不需要的功能的营销声明。