ORM (对象关系映射)可以 较好的解决面向集合的关系型数 据库与面向对象的程序设计语 言之间的不匹配问题。本文应用了微软的ORM框架 Entity
Framework,进行了数据库对象到 应用程序对象的映射,建立了防 作弊称重系统中的数据模型,使 得在应用程序中能够以一种透明 的方式实现数据的持久化操作。 ORM技术的应用一方面使开发人员 的精力集中到系统业务逻辑的实 现上,另一方面大大提高了系统 的开发效率。
1.前言
信息系统的实施一般离不开业务数据的 持久化操作,一方面使用面向集合的关系数据 库进行数据存储是最常见的方式,而另一方面 在系统的编码实现时却使用的是面向对象的程 序设计语言,这就使得两者之间存在不兼容的 情况。而ORM (对象关系映射)的出现,使 得这一问题得到较好的解决,使开发人员在应 用程序中能够以一种透明的方式实现数据的持 久化操作,在将开发人员的精力集中转移到系 统业务逻辑实现上的同时,另一方面大大提高 了系统的开发效率。
ORM是一种解决方案,并不针对某一 种特定的编程语言。目前有较多的ORM框 架,比较流行的有微软的Entity Framework、 Hibernate 等。
2.Entity Framework框架
Entity Framework框架是微软公司的一个优秀的ORM框架。该框架实现了 ORM框架 应该包含的几个部分,如应用程序对象与数据 库对象之间映射关系的定义、对应用程序对象 进行CRUD操作的应用程序接口、应用程序 对象关联属性的延时加载等优化选项等。另外 该框架还提供了一种可视化的工具,使得程序 设计人员可以通过Visual Studio开发环境进行 高效的开发。
3.系统设计与实现
3.1基于Entity Framework的软件架构
防作弊称重系统基于Entity Framework框架实现业务数据的存取操作,系统的软件架构 图如图1所示。其中最底层为关系数据库SQLServer 2005,用于对业务数据进行存储;数据 层基于Entity Framework框架实现,用于和关 系数据库进行交互,实现数据的存取操作;业 务层基于数据层传递的数据对象实现系统的各 个业务操作,并为应用层提供操作接口;表现 层通过用户界面实现用户与系统的互操作。各 层通过Entity Framework框架生成的实体对象 进行数据的传递。
3.2系统数据模型
基于Entity Framework框架进行数据访问时,可以采取数据库优先、模型优先以及代码 优先三种方式。基于数据库优先的方式需要先 设计好数据库,然后使用Entity Framework生 成相应的数据模型;基于模型优先的方式则运 行通过Visual Studio开发工具创建数据模型, 然后根据模型自动生成数据库;基于代码优先 的方式允许开发人员通过编写C#代码创建实 体对象,然后根据代码自动生成数据库和数据 模型。本系统采用了数据库优先的方式,生成 了系统的对象模型图。
3.3基于LINQ to Entities进行查询
创建好系统数据模型后,就能够通过面 向对象的方式对数据模型进行操作。常见的三 种查询方式如下:
(1)基于集成化的查询语言LINQ to Entities。 LINQ to Entities 是 .NET Framework 中LINQ的一个组成部分,可以对Entity Framework框架生成的实体进行查询。
(2)基于Entity SQL语言。该语言的语 法与SQL语言的语法相似,值得注意的是, 该语言的执行需要Entity Client的支持。
(3)基于查询生成器的相关方法。这些 方法主要基于ObjectQuery类,该类包含一些 查询的方法,如OrderBy、Top、Skip等,这 些方法与lamda表达式结合使用,且提供面向 对象的编程方式,可以高效的对实体对象的集 合实现排序、筛选等常用操作。
在对本系统实体模型进行查询时,使用了 LINQ to Entities的查询方式。以下将以称重货 车信息的查询和修改操作为例,介绍系统对业 务数据的操作方法。
初始化一个对象容器的实例,具体代码 如下:
MyEntities me= new MyEntities();// 声明一个实体对象容器的实例
IQueryable<Truck> result= me.Truck. Where(r => r.TruckNo == “ 鄂 D11111” );// 调 用了 LINQ to Entities 的方法 Where, 查询系
统中车号为“鄂D11111”的货车对象。在 Where方法中使用Lamda表达式用于设置匹 配条件
if (result.Count() > 0) // 找到了相应记录{ result.First().Driver= ” 张三丰 ”;// 修改该 货车对应的司机姓名
me.SaveChanges();// 保存修改}
4.总结
本文介绍了应用了 Entity Framework框架实现对象关系映射的过程以及使用LINQ To Entities进行数据存取操作的方法.基于该 ORM框架能够较大程度上提高系统的开发效 率,并且能够快速响应系统中数据需求的变化, 提高系统可维护性。