498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/2B122036585.png" />
数据库表与表模块类的映射关系是通过.NET提供的内存数据对象DataSet、
DataTable来实现。
- public class Order
- {
- private System.Data.DataTable _orderItems;
- private DataSet _ds;
- public Order(DataSet ds)
- {
- _ds = ds;
- }
- /// <summary>
- /// 返回订单对应的所有产品信息
- /// </summary>
- /// <returns></returns>
- public DataTable Products()
- {
- return _orderItems;
- }
- /// <summary>
- /// 返回当前索引号的订单信息
- /// </summary>
- /// <param name="index"></param>
- /// <returns></returns>
- public DataRow GetRow(int index)
- {
- return _ds.Tables[0].Rows[index];
- }
- /// <summary>
- /// 根据订单的ID返回订单的信息
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- public DataRow GetRowByID(int id)
- {
- return _ds.Tables[0].Select("id=" + id.ToString());
- }
- public int Update(int orderID)
- {
- return 0;
- }
- public int Delete(int orderID)
- {
- return 0;
- }
- public int Insert(int orderID)
- {
- return 0;
- }
- }
我们这里的数据如果发生变化时,我们如何将变化了的内存中的datatable或者dataset持久化到数据库中呢,ADO.NET为我们提供了dataadapter,通过这个适配器我们完成datatable中的数据持久化到数据库表中。具体的形式就是上图中的流程,UI层通过数据请求方法,然后表模块层中有相应的方法,将发送数据请求访问数据库,然后数据库返回相应结果通过datatable或dataset来初始化表模块类中的数据信息,然后返回给UI层相应的数据信息,然后绑定后显示。
总结:表模块模式相比事务脚本模式。是我们推荐的使用模式。并且VS中自动继承了相应的datatable 与datas的相应的图形化设计方法,很方便的使用。并且内部.NET framework 内置了相应的操作方法可以迅速的实现交互,在过程式模式中无疑是使用表模块模式是首选方案。表模块模式更关注的是与数据库表的映射关系,那么可以说表模块模式中包含了数据模型。有一些面向对象的味道,不过表模块模式中并不关注业务。
对象式模式
我们来讲述下面向对象的模式中的2种方案
1、活动记录模式
我们知道业务逻辑层中的业务逻辑才是系统的核心,那么我们更关注的是业务逻辑或者领域逻辑。因为我们必须关系实体之间的交互。我们如果对领域模型建模。我们需要使用面向对象的角度去分析需求。 我们先来看看基于对象模式的活动记录模式。
活动记录模式是在表模块模式的基础上,将表模块的粗粒度的基