1、第 15 章应用开发 数据库通用类的设计o 由于系统中对于数据库操作都需要处理连接字符串、创建连接、执行查询、更新等通用操作,为了提高代码的复用性,在软件开发时一般都创建数据库通用类完成数据库的通用操作。本章介绍了流行的三层体系架构的概念、利用 LINQ to SQL自动创建数据库通用类的方法和利用数据库通用类操作数据库的简单例子。o o 系统分析o 数据库分析和设计o 系统设计o 运行系统o 在我的 WinForm应用中应用本系统o 开发过程常见问题及解决o 系统分析o 数据库分析和设计o 系统设计o 运行系统o 在我的 WinForm应用中应用本系统o 开发过程常见问题及解决15.1 系统
2、分析o 使用 ADO.NET访问数据库时,每次操作都要设置数据库连接connection属性、建立连接、使用 SQLcommand和进行事务处理等,比较繁琐且有很多重复操作。项目开发中一般创建数据库通用类把这些繁琐的、常用的操作封装起来,以更方便、安全地使用 ADO.NET。15.1.1 三层体系结构o 目前,流行的项目多采用三层体系结构。三层体系结构就是在表示层(界面层)与数数据访问层之间加入一个中间层,叫做业务逻辑层,一般将业务规则、数据访问、合法性校验等工作放到中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过中间层与数据库进行交互。o 典型的三层结构包括表示层、业务逻辑
3、层和数据访问层,使用三层结构创建的应用系统,由于层与层之间的低耦合和层内部的高内聚,使得解决方案的维护变得更容易。o 表示层:主要是指与用户交互的界面,用于显示数据和接收用户的输入,将用户输入的数据传递给业务逻辑层,一般不包含任何实际的业务处理,当业务逻辑层的数据发生变化时,表示层就会显示出更新的结果。表示层是应用程序提供给用户的操作界面,通常是包含 Windows窗体或 Web页面的 Windows窗体应用程序或 Web应用程序。o 业务逻辑层:是表示层和数据访问层之间的桥梁,它代表应用程序的核心功能,负责处理数据层的数据,实现具体的业务逻辑。业务逻辑层通常为类库。o 数据访问层:主要实现对
4、数据的操作,将数据库中的数据提交给业务层,同时将业务层处理过的数据保存到数据库中。数据访问层可以访问关系数据库、文本文件或者 XML文件,数据访问层通常为类库。o 使用三层结构的目的是是使项目结构更清楚,分工更明确,有利于维护。三层架构就像员工、经理和董事长之间的关系一样,员工向经理汇报工作,经理汇总后再向董事长汇报,反之,董事长有什么命令传达给经理即可,再由经理通知每位员工。如果员工都直接找董事长,管理就会变得比较混乱。o 三层架构搭建好之后,有一个问题需要解决,如何在三层之间传递数据呢?目前通用的解决方法有两种:一种是创建实体层使用实体层中的实体类在三层之间传递数据,另一种是使用数据集在三
5、层之间传递数据。使用实体类的优点是实体类是一个比较容易控制的对象,它具有面向对象的基本特征,可以自由的向实体类中添加行为等;实体类消除了关系数据和对象之间的差异,便于操纵关系数据;能更好地发挥分层的作用,更好地进行复用和扩展,增强灵活性。15.1.2 系统分析o 系统分析是开发应用系统的关键,通过系统分析了解客户需要什么样的程序,系统需要完成什么功能。通过软件需求规格说明书描述系统的总体要求,并且作为各方面沟通的依据,也为下一步工作提供基准。系统开发人员要按照软件需求规格说明书完成相应的功能。o 本节介绍的 “数据库通用类 ”的设计来源于第 24章的 “人力资源管理系统 ”,重点介绍如何利用
6、LINQ to SQL建立负责数据库操作的通用实体类。 “人力资源管理系统 ”中的主要功能,如员工管理、考评管理、员工调动管理、培训管理、奖惩管理等都需要操作数据库,每次操作需要设置连接属性、建立连接、使用SQLcommand、事务处理等,非常麻烦并有很多重复工作,所以创建一个通用类,以更方便、安全地操作数据库。o “人力资源管理系统 ”采用三层架构模型。利用 LINQ to SQL创建数据库通用实体类实现在三个模块之间使用对象进行数据传递和负责操作数据库。利用 .NET Framework 3.5中新增的 LINQ可以简化三层体系架构的搭建,在以往的系统中,数据访问层要访问数据字段,业务逻辑层要得到数据都需要通过数据访问层来实现,通常创建数据库通用类来辅助数据访问层操作数据库,数据库通用类可以看做单独的一层(数据模型层),LINQ可以自动生成数据模型层,产生一个 dbml( Database Mark Language数据库描述语言)文件用来描述数据库信息, dbml文件是xml格式的文档,有了它可以快速生成实体类,实体类作为实体层负责对数据库操作。如下图的 DataLinq层就是实体层和数据模型层的组合。利用 LINQ创建的三层体系结构如下图所示。