深入了解 Entity Framework Core:功能、应用与局限
1. 什么是对象关系映射器(ORM)
在数据库领域,关系型数据库占据主导地位;而在编程世界里,一切围绕对象展开。这两个世界在语义和语法上存在显著差异,被称为阻抗不匹配。对象关系映射器(ORM)应运而生,它可以将面向对象世界的概念(如类、属性、类之间的关系)转换为关系世界的对应结构(如表、列和外键)。
例如,在对象模型中,你可以通过一组相互关联的对象来映射对象之间的 N:M 关系;但在关系数据库中,你需要一个中间表。此外,关系数据库不支持继承,不过有不同的复制方式。
ORM 工具可以让开发者留在面向对象的世界中,指示 OR 映射器加载或存储关系数据库表中以记录形式存在的特定对象。像手动创建 INSERT、UPDATE 和 DELETE 语句等繁琐且易出错的任务也由 OR 映射器处理,从而减轻了开发者的负担。
2. .NET 世界中的 OR 映射器
当 .NET 开发者使用 DataReader 或 DataSet 从数据库中读取数据时,此时并没有进行对象关系映射。因为 DataReader 和 DataSet 只是管理表结构的 .NET 对象,从对象模型的角度来看,它们是无类型、非特定的容器。只有当开发者为表中存储的结构定义特定类,并将 DataSet 或 DataReader 中的内容复制到这些特定数据结构中时,才进行了 OR 映射。这种“手动”的对象关系映射对于读取访问来说是耗时、乏味且单调的编程工作,尤其是对于非常宽的表。
在 .NET 世界中,曾经微软在很长一段时间内未能推出合适的 OR 映射产品。.NET 1.0 版本没有包含 OR 映射