ERP软件开发架构之二 数据访问层设计
2011-09-25 09:09
274 查看
1.2数据访问层
数据访问层是为了统一数据库的访问接口,它实现了对数据表的常见操作,如增加、修改、删除、查询。有了数据访问层,程序员可以把主要精力放在业务逻辑的实现上。通过数据访问层,我们可以在不修改业务逻辑层的情况下,实现数据库平台的切换。如果有一天,我们的系统需要从C/S结构转化为三层结构(多了应用服务器层),也可能通过修改数据访问层来实现。1.2.1数据访问层的类图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/cb300f7d98a931a3127cf34b69340eb6.gif)
备注:
1)一般而言,我们的业务类是派生于EntityClass,例如上图中的UserPower类,如果是单据则派生于BillClass,例如OrderManager类。
2)通过EntityClass,我们可以统一数据存取方式,简化业务逻辑的实现代码,让开发人员把更多的时间放在业务逻辑的设计上。
3)通过实体类,我们可以让程序使用不同的数据库平台(Access 、SQL Server、Oracle),但业务类不用做任何修改。
1.2.2 DataTableExt介绍
DataTableExt主要是在DataTable的基础上,添加取以下功能:1)提供了数据导航功能。主要有MoveFirst、MovePrevious、MoveNext、MoveLast这几个方法,而且可以记录DataTable的当前行(CurRow)。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/3c8c797009c17b26058fea8fd220e3e6.gif)
2)为简化Table操作,提供了行数(RowCount)、当前行索引(CurRowIndex)、当前行(CurRow)这几个属性。为了方便用控制,DataTableExt还提供了焦点行变化事件(RowIndexChange),例如实体类中利用行变化事件读取子表的内容。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/494b6377c1ffc43bac201f1e7e175cb4.gif)
RowIndexChange事件的方法原形如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/b5006532af1faa6097e7ac2b45d2d9d5.gif)
3)提供了数据操纵功能。让用户可以增加(AddRecord)、修改(EditRecord)和删除(DeleteRecord)记录、取消修改(CancelEdit)、结束本次修改(EndEdit),执行这些动作后系统会更新当前行(CurRow)。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/084a070037747edb598c40b405819b88.gif)
4)记录DataTable的父表和子表。根据这两个属性,我们可以处理很多事情,例如当焦点行发生变化时,可以读取子表的内容,在子表增加新行时自动把父表的主键Copy到子表。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/0954c57b3cfef603bb1a0b6a48cfc87f.gif)
调用范例:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/4d8b7d30f9f0111837333aaf833efead.gif)
5)生成当前表的记录级权限、查询语句,并且打开数据表后设计数据表的主键。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/c807406f6defaa196d0e7ac0d5949afb.gif)
6)通过设置自增长字段属性,系统在增加新行时,可以自动产生字段值。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/e1c390050a20808c841b56e03520feb2.gif)
在默认情况下,只需要设置AutoIncFieldName就可以了,因为其它属性都有默认值。下图是使用自增长字段的之后的范例:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/aa680e52ddf75069da9355ef6de9deb0.gif)
增长步长为10时的范例:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/0528e88df63e3d518f9f57fd1be89288.gif)
相关文章推荐
- .NET 分布式架构开发实战之二 草稿设计
- “变化”、“复用”、“抽象”、“稳定”影响着软件设计模式,架构,开发方法
- PC软件开发中BC/S设计架构的实现
- 第06章 软件架构设计 之 基于架构的软件开发方法
- 软件架构设计之五:基于构件的开发
- 精益敏捷开发下的软件架构设计
- .NET 分布式架构开发实战之二 草稿设计
- 软件架构设计之二:信息系统基础知识
- .net erp(办公oa)开发平台架构概要说明之表单设计器
- 企业管理软件开发架构之七 Object Control设计与运用
- 如何设计一个软件的架构,使它可以提供二次开发的功能?
- .net erp(办公oa)开发平台架构概要说明之表单设计器
- SoC嵌入式软件架构设计之二:虚拟内存管理原理、MMU硬件设计及代码分块管理
- ERP软件开发架构之一 建立Desktop与Web共存的多层架构
- web开发,是个非常敏捷的过程,变化随时都在产生,用户需求千变万化,许多方面偶然性非常高,较之软件开发,希望用一个架构规划以后的所有设计,是不现实的
- 一起谈.NET技术,.NET 分布式架构开发实战之二 草稿设计
- 软件开发之概要设计之软件架构问题
- 架构设计--仅是软件开发之第二大影响力?!
- 敏捷开发下, 如何将需求分析,架构(软件)设计,开发与测试,一气呵成式的结合且高效的完成 ?
- [原创].NET 分布式架构开发实战之二 草稿设计.NET 分布式架构开发实战之二 草稿设计