数据库操作的抽象类 荣

 编号 方法 描述 返回值 参数
1 Add 实现添加功能。 void DT类
2 AddPlus 实现带逻辑的添加功能。(例如:判断记录是否已经存在) void DT类
3 Edit 实现编辑功能。 void DT类
4 EditPlus 实现带逻辑的编辑功能。  void DT类
5 Delete 实现删除功能。 void DT类
6 Get 取得一条记录。 BaseDT DT类
7 GetAllList 取得所有记录。 DataTable DT类
8 GetAllListView 取得所有记录的视图数据。 DataTable DT类
9 GetDataSource 取得单选框之类的数据源。 DataTable DT类
10 IsExist 判断记录是否已经存在。(为添加) bool DT类
11 IsExistForEdit 判断记录是否已经存在。(为编辑) bool DT类
12 GetValue 取得一个值。  object DT类,字段名
13 (事件)OperEvent 添加/编辑中的其他操作 void DT类
14 GetList 取得数据列表(带条件) DataTable DT类
15 (属性)ErrorText 错误信息 string
16 ClearErrorText 清除错误信息 void
17 (属性)IsError 判断是否有错误信息提出。 bool
18 IsExist 判断符合某个条件的记录是否存在 bool

sql对象

19 (虚函数)GetBaseSQL 根据对象类型生成IBaseSQLable对象。 IBaseSQLable

DT对象

20 GetListSQL 取得带条件SQL语句 string
21 ErrorType  常用的错误提示信息。 class
22 (属性)IsUsingTrans  是否使用事务。 bool
23 (事件)OperLastEvent 完成添加后的操作。 void DT对象
24 (事件)OperEventTrans 添加/编辑中的其他操作 void DT对象,数据库操作对象
25 (事件)OperLastEventTrans 完成添加后的操作。 void DT对象,数据库操作对象
26 (属性)IsUsingExist 是否判断有相同的记录存在。(默认值:tru) bool



AddPlus的流程:

/// <summary>
  /// 实现带逻辑的添加功能。
  /// </summary>
  /// <param name="detail"></param>
  public void AddPlus(DT detail)
  {
   // 清除错误信息
   ClearErrorText();

   // 判断记录是否存在
   if (IIsUsingExist && IsExist(detail))
   {
    // 错误信息 ("Add_Exist")
    ErrorText = ErrorType.Add_Exist;
    return;
   }

   // 如果应用事务
   if (IsUsingTrans)
   {
    // 实现事务处理
    AddPlusStepTrans(detail);
   }
    // 如果不应用事务
   else
   {
    // 实现无事务处理
    AddPlusStep(detail);
   }
  }

  /// <summary>
  /// 无事务处理时的实现。
  /// </summary>
  /// <param name="detail"></param>
  private void AddPlusStep(DT detail)
  {
   // 清除错误信息
   ClearErrorText();

   if (OperEvent != null)
   {
    // 执行其他操作
    OperEvent(detail);

    // 如果出现错误
    if (IsError)
    {
     return;
    }
   }

   Add(detail);

   // 后续方法

   if (OperLastEvent != null)
   {
    OperLastEvent(detail);
   }
  }

  /// <summary>
  /// 事务处理时的实现。
  /// </summary>
  /// <param name="detail"></param>
  private void AddPlusStepTrans(DT detail)
  {
   // 清除错误信息
   ClearErrorText();

   bool selfTran = false;

   //事务处理
   if (curDBOperater.baseTransaction == null)
   {
    curDBOperater.BeginTran();
    selfTran = true;
   }

   try
   {

    if (OperEventTrans != null)
    {
     // 执行其他操作
     OperEventTrans(detail, curDBOperater);

     // 如果出现错误
     if (IsError)
     {
      // 回滚事务
      curDBOperater.RollBackTran();
      return;
     }
    }

    Add(detail);

    // 后续方法
    if (OperLastEventTrans != null)
    {
     OperLastEventTrans(detail, curDBOperater);

     // 如果出现错误
     if (IsError)
     {
      // 回滚事务
      curDBOperater.RollBackTran();
      return;
     }
    }

    // 提交事务
    if ( selfTran )
    {
     curDBOperater.CommitTran();
    }
   }
   catch(Exception ex)
   {
    // 回滚事务
    curDBOperater.RollBackTran();
    throw ex;
   }
   finally
   {
    if ( selfTran )
    {
     curDBOperater.baseTransaction.Dispose();
    }
   }
  }


我忘记了几个地方:
1:事务的应用。
2:添加成功后的后续方法。

原文地址:https://www.cnblogs.com/admin11/p/476369.html