代码如下:
- public interface ITransaction
- {
- /// <summary>
- /// 是否事务执行
- /// </summary>
- bool IsTransaction
- {
- get;
- }
- /// <summary>
- /// 开始事务
- /// </summary>
- void BeginTransaction();
- /// <summary>
- /// 提交事务
- /// </summary>
- void Commit();
- /// <summary>
- /// 回滚事务
- /// </summary>
- void Rollback();
- }
基类中的代码如下:
- #region ITransaction
- /// <summary>
- /// 是否事务执行
- /// </summary>
- public bool IsTransaction
- {
- get
- {
- return GetTransaction().IsTransaction;
- }
- }
- /// <summary>
- /// 开始事务
- /// </summary>
- public void BeginTransaction()
- {
- GetTransaction().BeginTransaction();
- }
- /// <summary>
- /// 提交事务
- /// </summary>
- public void Commit()
- {
- GetTransaction().Commit();
- }
- /// <summary>
- /// 回滚事务
- /// </summary>
- public void Rollback()
- {
- GetTransaction().Rollback();
- }
- /// <summary>
- /// 返回事务单元列表
- /// </summary>
- List<TransationUnit> list
- {
- get;
- }
- /// <summary>
- /// 执行事务单元的操作,执行数据操作并提交
- /// </summary>
- /// <param name="unit"></param>
- void Excute(TransationUnit unit);
- #endregion
- /// <summary>
- /// 事务组件服务
- /// </summary>
- /// <returns></returns>
- protected abstract ITransaction GetTransaction();
事务组件中添加了特殊的事务单元,用来存储事务执行的操作CUD,还有就是要事务执行的数据对象,当然事务对象中的CRD操作就是使用前面讲解的CRD操作
的方式,我们来看看吧,我们来看看事务单元的形式。
- /// <summary>
- /// 事务单元
- /// </summary>
- public class TransationUnit
- {
- /// <summary>
- /// CUD枚举
- /// </summary>
- public enum CUDEnum
- {
- Create,
- Update,
- Delete
- }
- private CUDEnum _cudType;
- private object _model;
- public TransationUnit(object model, CUDEnum cudType)
- {
- _model = model;
- _cudType = cudType;
- }
- }
我们在事务处理中,我们只执行事务列表中的操作,置于非事务列表中的单元我们将不做任何处理,所以我们只要是事务执行的事