数据库操作的抽象类
编号 | 方法 | 描述 | 返回值 | 参数 |
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:添加成功后的后续方法。