Entity Framework浅析

2016-03-16 09:35王志丹
科技与创新 2016年4期

王志丹

摘 要:Entity Framework实体框架是以ADO.NET为基础,支持面向数据软件应用程序的技术。其以Entity Data Model为主,采用抽象化数据结构,可将数据库的E/R模型转换成对象模型,其属性由库表字段转换而来,关联系统则由关系转换而来,最终将数据库对象转换为应用程序对象,目的是使编程员不直接在关系存储架构上编程。此外,采用该框架创建数据访问应用程序是通过创建概念应用程序模型进行的,可减少面向数据应用程序的代码量。

关键词:EDM;ADO.NET;Entity Framework;编程员

中图分类号:TP311.52 文献标识码:A DOI:10.15913/j.cnki.kjycx.2016.04.071

在应用Entity Framework 技术时,会针对数据库生成模型和映射信息,并按照遵循1∶1的映射原则。如果要对数据表中的数据进行增添、删除、修改、查询等操作,则可在代码中直接操作。但事实上,一些操作违背了程序开发以应用为导向的概念模型的出发点,且这样的处理方式易使对象概念不清晰,也不利于减少编写程序的代码量。

1 Entity Framework核心概述

Entity Data Model简称EDM,指实体数据模型。Entity Framework是基于EDM进行数据访问的。EDM属于一个规范,用于定义在实体框架基础上生成的应用程序和使用数据。应用程序域中的实体和关系是由EDM的应用程序在设计架构中定义的。应用程序代码使用的可编程类则是由设计架构生成的,存储架构是在此模型中的另一个架构,用于持久保留应用程序数据的存储架构。而设计架构与存储架构间的连接桥梁为映射规范。设计架构中生成可编程对象模型后,由存储架构将其映射到设计架构,从而使起到桥梁作用的映射规范可有效地将存储架构与可编程类连接在一起。此外,EDM还可提供在EDM架构和映射规范中使用的基本实体和关系类型,开发人员在设计应用程序时,可根据需要使用这些实体和关系类型。

EDM由概念模型、存储模型、映射三大部分组成。概念模型主要用于描述实体类,由概念架构、语言定义;存储模型又称逻辑模型,主要描述数据库中的对象,比如表、主键、列、索引等,由存储架构、语言定义,映射包含存储模型中的列和概念模型中的实体属性。

具体化的对象用数据读取器以序列化格式读取,进而可得到EDM定义的实体,其能在CLR语言中编程、更新、保存,不需要使用嵌入式SQL字符串或其他数据库语法。虽然用来管理应用程序的数据实例均具有检索优势,但存储模型已经过优化,能有效地检索、存储数据。

数据模型是基于概念的一个整合体,体现于数据的类型、属性、关系、约束条件等方面,进而在应用程序的代码中体现。

2 Entity Framework的对象关系映射

在两套截然不同的理论中,产生了以下概念:①基于“软件工程”的基本原则,比如封装、耦合、聚合,并在此基础上,产生了面向对象;②由“数学理论”产生的关系数据库概念。由此可见,产生了阻抗不匹配的问题。为了解决该问题,从而提高开发效率,出现了对象关系映射技术(ORM)。

开发一个不使用ORM的应用程序时,可能会用到在数据库中生成保存、读取、删除对象信息等访问层的代码,并将读取对象数据、改变对象状态等的方法写入DAL中,这些代码虽然相似,但不能被重用。

为了解决以上问题,可从O/R入手(O为对象,R为关系)。绝大多数的程序都会涉及到关系数据库。当对象信息发生变化时,需要将这类信息保存在关系数据库中。

ORM系统是随着面向对象软件开发方法的发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式。业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中对象之间存在关联和继承的关系,而在数据库中,关系数据无法直接表达多对多的关联和继承关系。因此,ORM系统一般以中间件的形式存在,主要表达程序对象到关系数据库数据的映射。

ORM系统完成了“实体对象”到“关系数据库表”的透明化、自动化、持久化,提供了易于理解的模型化、概念性的数据表达方法。ORM系统包括4部分:①API,可对持久类对象进行CRUD操作;②规定类、类属性查询规则的API或语言;③规定mapping metadata的工具;④一种可以使ORM与对象数据共同进行dirty checking、lazy association fetching以及其他优化操作的技术。

应用程序、Entity Framework、EDM、ORM、ADO.NET数据提供者与数据库间的关系如图1所示。

参考文献

[1]谢日星.ADO.NET Entity Framework建模技术研究[J].科技传播,2010(11).

[2]沈霞菲,王建中.基于.NET Entity Framework数据库访问机制的设计与应用[J].现代电子技术,2014(12).

[3]吴芸.基于Web的网上书店系统的设计与实现[D].北京:电子科技大学,2013.

〔编辑:张思楠〕