Entity Framework出场!
ADO.NETEntity Framework(简称EF) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,早期被称为 ObjectSpace,现已经包含在 Visual Studio 2008 Service Pack 1 以及 .NET Framework 3.5 Service Pack 1 中发表。
在早期ADO.NET时代,我们的数据访问是针对关系型数据库来进行的,ADO.NET讲数据处理分为多个可以单独使用的组件,一部分用于连接数据库、执行命令,一部分是检索结果的.Net Framework数据提供程序。在ADO.NET的DataSet对象中向用户公开,也可以进行多个数据源的整合,多层的传递,也可独立于数据提供程序,管理本地和来自xml的数据。
EF提供开发人员通过对概念性应用程序模型编程(而不是直接对关系型数据库编程)来创建数据访问应用程序。这样我们可以得到什么好处呢?
实体框架可以让开发人员重点关注特定对象和属性来使用数据,而不是去关注表和字段。EF通过提升这个阶段的抽象级别来实现了减少代码和维护量的工作。
在面向数据的开发中,我们一般有三个数据建模的工作要做,概念模型、存储模型、物理模型,概念模型就是咱们项目前期的逻辑图(比如数据库关系图),物理模型即实际的数据库对象(表、存储过程、视图等),程序员一般都是通过sql语句或调用这些对象来操作存储模型。存储模型就是关心型数据库通过外键约束将各个实体的关系固化到表中。EF可以让开发人员直接查询概念模型中的实体和关系,同时通过EF框架将这些操作转化为数据所在数据源的特定命令,这样我们的程序将对数据源不具有硬编码的依赖性。
在EF中概念模型和存储模型的两者之间的映射以一种被称为EDM(实体数据模型) 来规范,因此不需要对概念模型、数据类或应用程序代码进行更改,存储模型可以提供多个不同数据源类型一致的概念模型。
EF中使用概念架构定义语言文件(.csdl)来定义定义概念模型,存储架构定义语言文件 (.ssdl) -- 定义存储模型,映射规范语言文件 (.msl) -- 定义存储模型与概念模型之间的映射,并提供对概念模型中实体和实体关系的创建、修改、删除、读取转换为数据源的具体操作,同时EDM还支持实体映射存储过程。
面临的问题?
目前面向对象开发与关系型数据库存储架构之间存在一个矛盾,类的组织一般接近于数据库的表关系,但不完全一致,EF将关系表、列、外键都映射到概念模型中的实体和关系,开发人员可以通过EDM生成的导航属性来关联对像的形式处理实体和关系,
访问和更改数据
EF提供了三种方式查询EDM并返回对象,
下一篇:EF的基本环境配置和简单例子