EF技术在进销存管理系统的应用研究

林佳一

摘要:面对日益庞大且复杂的应用系统,传统的数据访问技术存在开发效率低、安全性弱和兼容性差等问题。为了进一步快速构建一个功能强大的系统,Ettyr数据模型这一新技术应运而生,该技术基于ORM框架,融合了面向对象的思维方式。将EF技术应用在三层架构的进销存管理系统,程序员可不再拘泥于SQL语句细节,而是重点关注程序逻辑的实现。EF技术的使用大大缩短了开发周期,有助于更有效地使用数据。

关键词:Ettyr;ORM;三层架构;SQL

中图分类号:TP3文献标志码:A文章编号:006-8228(208)03-38-04

RsrhthppltfEFthlyvtrytsyst

LJy

(GuDCutPlyth,Guzhu,Gud50650,Ch)

Abstrt:Fthrslylrdplxppltsyst,trdtldtssthlyhsyprbls,suhsldvlptffy,surtydprptbltyIrdrtfurthrbuldprfulsystquly,ththlyfEttyrdtdltbThsthlysdthORMr,dtrtsth-rtdyfthThppltfEFthlythr-trrhtturfvtrytsyst,thprrrslrtbddthdtlsfSQLsttts,butrthrfusthrlztfprrlThppltfEFthlyrtlyshrtsthdvlptyldhlpstusdtrfftvly

Kyrds:Ettyr;ORM;thr-trrhttur;SQL

0引言

随着大数据时代的到来,人们普遍关注如何应用信息化的手段高效地管理和使用数据。无论单位规模大小,都建有独立的信息系统来管理自己重要的数据。在实现这些系统的过程中,数据的访问技术直接决定着系统使用数据的质量和效率。尽管在设计思想上,从二层结构、三层结构到N层结构的分层开发模式对提高系统的开发速度效果明显,但在数据访问方面还有进一步提升的空间。

业界需要一种数据访问技术,它对用户而言希望快速有效获取数据,对开发者而言希望容易掌握。EF技术的出现为满足这些要求提供了一种新的方案。EF技术是由传统的数据访问技术发展而来,是ORM框架的具体实现,解决了关系表到实体类的转换问题,使程序员从面向对象的角度上操作数据库。本文通过分析EF技术原理,结合三层架构开发模式,探讨了在进销存管理系统中应用EF技术的方法。

相关技术概述

ORM框架

较长一段时间内,应用系统的程序设计使用的是面向对象技术,而数据库的设计依然沿用的是面向集合关系模型,因此在开发中程序员需要将关系模型转换为对象实体以便代码访问,这大大加重了程序员的工作负担。为了让程序员专注于业务代码,ORM框架应运而生。ORM(RltMpp)全称为对象关系映射。O指编程语言中相应的类,R指关系数据库中的二维表,M是指关系和对象之间的映射[]。通过这种映射,ORM框架将关系数据库中的数据表用类的形式表现出来,这样程序员只需要通过操作类来操作数据库而无须再写复杂的SQL语句。

2EF数据模型

实体框架(Ettyr)简称为EF,是微软针对其NET平台推出的一种基于ORM技术的具体实现方案。自从在VsulStud200中首次使用以来,历经多年完善,如今已经成为开发数据库应用程序的相对成熟技术。

EF技术的核心是实体数据模型(EttyDtMdl)简称为EDM,它由三部分组成,概念层、映射层和存储层[2]。概念层是抽象的,指应用程序涉及的实体类和关系;存储层是具体的实现,指数据库中的表;映射层主要完成數据表和实体对象之间转换,这种映射是双向的,它能将数据表转换成NET实体对象,也可以将NET实体对象转换成数据表。在VsulStud的项目中使用EF数据模型时,EDM具体的实现形式是一个后缀名为dx的文件。这是一个用的格式描述元数据的文件,其中有三个重要的节点、和分别描述了概念层、映射层和存储层。它不仅设置了概念层模型和存储层模型的基本结构,还配置好了两者之间的全部映射关系。

EF提供了三种用户端来访问EDM,分别是EttyClt、Ctxt和LINQtEtts。无论是哪种用户端,EDM中的数据提供者在数据源和用户端之间传递着数据,整个访问过程本质上都会转换为SQL语句,SQL语句中所操作的表和字段都来自于对dx元数据文件的解析结果,而最后的操作都会交给ADONET完成。因此可以认为EF是在ADONET的基础上对数据的操作细节所做的进一步封装。

根据不同的系统开发场景,使用EF技术时有三种开发方式[3],如图所示。第一种方式:模型优先(MdlFrst),首先需要在VsulStud中创建实体类模型,然后按照EDM中的映射规则,系统自动生成数据库的表和相关脚本。这种方式适用的情况是开发时还未建好数据库,或者在开发过程中需要频繁通过修改实体类模型来更新数据库;第二种方式是数据库优先(DtFrst),先创建数据库,再将数据表转换为实体类模型,并编写代码来访问将数据表。此方式从搭建数据库起步,符合传统的系统开发思维,开发者容易掌握;第三种方式是代码优先(CdFrst),开发者先写实体类代码,通过创建类的对象,自动将对应的表生成到数据库中,并可以通过数据库自动生成实体类模型。该方式比较适合精通面向对象编程而不熟悉数据库语句的开发者,或者数据库规模较小。

3三层架构

大部分数据库应用系统代码中都包括界面设计程序、逻辑判断程序和数据访问程序。如果这些代码全部混杂在一起,当数据库系统或用户界面发生改变时,则需要重新开发整个系统。为了方便系统的修改和重构,无论是部署在C/S(Clt/Srvr)还是B/S(Brsr/Srvr)之上的软件项目,都广泛应用了三层架构开发模式。

三层分别指UI层(表示层)、BLL层(业务逻辑层)和DAL层(数据访问层)[4]。UI层位于最上层,主要是界面的设计;BLL层在UI层和DAL层之间,负责数据处理和传递;DAL层功能主要是负责数据库的访问。三层各司其职、相互合作完成系统功能。三层之间传递数据显然不能直接是数据表,而是面向对象程序设计语言中的实体类表示,于是,需要将表中的数据转换成一个实体类的对象的集合。

2在系统中使用EF技术的原因

目前,在基于NET平台上的WFr、AspNt、AspNtMVC、WCF等各种应用程序中都广泛采用了EF技术。EF技术之所以备受关注并成为数据访问领域的主流,主要原因如下:

⑴能与多种数据库管理系统无缝整合,有利于系统的更新和扩展

EF作为一个轻量级的数据访问框架不仅应用于SQLSrvr数据库,还可以支持Orl、MySQL和SQLt等各种的数据库。虽然这些数据库的SQL语句存在一定的差异,但对于使用了EF技术的应用程序而言,通过EDM的映射,在访问数据库的操作中屏蔽了这些不一致,这样使得更换数据库系统变得更加灵活。

⑵EF技术与三层架构中的实体类相互融合,减少了数据传递的代码量

在三层架构的应用程序中,三层之间通过实体类来传递数据,实体类的一个对象对应二维表里的一行数据,实体类的每个属性对应表中的相应字段。EF中所用到的实体模型和关系数据库表是一一对应,相互之间形成映射。

⑶符合面向对象的思维方式,易于程序员学习和使用

EF技术让程序员直接用面向对象的编程方式来操作数据,而不必拘泥于低层访问数据库代码的细节。EF语法结合了LINQ代码或lbd表达式,因此代码非常简洁,开发人员容易掌握。这些高度封装的代码最终由系统自动转换为SQL语句。比如,对那些涉及多个表的操作,在EF中不用象在数据库中那样做联表,而直接用导航属性。EF中dx元数据文件会读取数据库中的关系,然后根据表的主外键关系生成导航属性。

⑷避免直接使用SQL语句,可以提高系统的安全性

EF技术除了用NET支持的语言完成有关数据库的增加、删除、修改和查询操作,还能很好地支持存储过程,有效地防止SQL注入式攻击,大大提高了应用程序的安全性。

3EF技术在进销存管理系统的应用

随着系统规模越来越庞大,功能越来越复杂,软件项目开发需要很多人分工合作,三层架构在系统开发中日益凸显着重要作用。同时,针对三层架构中的每一层的实现各自也有很多的方案,尤其是对DAL层,

NET平台的实现方法诸如ADONET,LINQ和EF等。EF作为微软当前最新数据存取技术,将其运用在项目中可以极大地发挥三层架构和EF各自的优势。下面以进销存管理系统为例,具体介绍EF技术在三层架构系统中的应用。该系统使用VsulStud202和SQLSrvr202,采用了数据库优先的开发方式。

3系统设计

⑴功能分析

该进销存管理系统基于C/S体系结构,用于小型商业企业日常经营业务[5]。主要包括六大功能模块。①用户管理,分为系统用户和普通用户;②基本信息管理,包括商品、供应商、客户和仓库信息的录入、修改、删除和查询;③进货管理,入库单信息编辑;④销售管理,销售单信息的编辑;⑤库存信息的管理,库存的查询和统计、库存上下限预警;⑥决策分析,产品的销量和库存排行与分析。

⑵搭建系统三层架构

按照分層的思想,在VS中构建系统的三层架构。首先新建“JXC”空白解决方案,在方案中添加“JXC”WIN窗体应用程序项目、“JXCBLL”和“JXCDAL”类库项目,它们分别表示UI层、BLL层和DAL层。三层之间传递的数据放在实体类组成的“MODEL”实体层中。UI层直接和用户打交道,主要实现显示系统的主菜单、销售信息编辑等核心功能界面及界面之间的跳转。BLL层原本是实现诸如登录、销售统计等业务的复杂逻辑,但这里只是通过对DAL层的方法调用来实现任务,仅起到传递和响应请求的作用。DAL层中实现了处理的各个实体类的方法。

32实现EF数据访问

⑴创建EF实体数据模型

在“MODEL”实体层项目中添加一个ADONET实体数据模型项,由于已经有“x”数据库,选择“从数据库生成”的方式,系统自动创建了xdx文件。xdx元数据文件保存了“x”数据库、实体类和映射关系的相关信息。与以前ADONET三层架构系统不同,EF会自动产生与数据库中各个表所对应的实体类。同时,还创建了数据库上下文类文件xCtxts,该文件中有一个xEtts类,对应于要访问“x”数据库,该类中为每个实体类定义了一个相关的实例属性,属性的类型是DbSt。

⑵DAL层使用EF实体数据模型

通常实体类会被系统的各层使用。在EF中通过xEtts对象的属性来访问要操作的表,如果要操作sll表就要操作对应的sll属性。数据的访问操作代码都封装在DAL层,而此时EF自动产生的类在实体层,于是需要将实体层使用的Ettyr程序集引入到DAL层,这样才能在DAL层使用DbSt的各种方法,同时由EF自动转换成SQL代码完成对数据库的操作。

33f关键代码分析

UI层接收到用户请求,UI层调用BLL层的方法进行处理,其中需要操作数据库的部分是由BLL层调用DAL层的方法完成。整个系统中最重要和最低层的代碼在DAL层。DAL层中把每个实体类相关的增加、删除、修改和查询的方法封装在各自的类中。由于这些操作方法中间的逻辑代码基本一致,只是处理的实体对象不同,因此,在DAL层抽象出一个DBDl泛型类,这个类的功能和基于ADONET三层系统中的SQLHlpr通用数据操作类的功能相似,主要包括对基本增加、删除、修改和查询方法,此时方法并没有确定针对哪个具体实体对象,DBDl泛型类部分代码如下所示。

publlssDBDlhrTEtty:lss

{

xEttsdb=xEtts();

DbStds=dbSt();

//条件查询

publIQuryblFd(

浏览次数:  更新时间:2018-05-07 10:40:57
上一篇:计算机应用技术专业的实践教学模式改革研究
下一篇:保持图像边缘的实时应用的超分辨率算法
网友评论《EF技术在进销存管理系统的应用研究》
评论功能已关闭
相关公文