事务类

weishaolin13x 2016-03-22 12:16:15
    /// <summary>
/// 任务
/// </summary>
public struct Task
{
public readonly string StrSql = "";
public readonly MySqlParameter[] ArrParameters = { };
public int TaskIndex = 0;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="strSql">sql语句</param>
/// <param name="arrParameters">参数数组</param>
public Task(string strSql, MySqlParameter[] arrParameters)
{
StrSql = strSql;
ArrParameters = arrParameters;
}
/// <summary>
/// 设置序号
/// </summary>
/// <param name="taskIndex"></param>
public void SetTaskIndex(int taskIndex)
{
TaskIndex = taskIndex;
}
}
/// <summary>
/// 事务处理类
/// </summary>
public class Trancation
{
private List<Task> listTask = new List<Task>();
/// <summary>
/// 事务处理构造函数
/// </summary>
/// <param name="strSql">sql语句</param>
/// <param name="arrParameters">参数数组</param>
public void AddTask(string strSql, MySqlParameter[] arrParameters)
{
Task task = new Task(strSql, arrParameters);
task.SetTaskIndex(listTask.Count);
listTask.Add(task);
}
/// <summary>
/// 事务处理构造函数
/// </summary>
/// <param name="mySqlInfo">单条sql命令</param>
public void AddTask(Task task)
{
listTask.Add(task);
task.SetTaskIndex(listTask.Count);
listTask.Add(task);
}
/// <summary>
/// 执行事务
/// </summary>
public void Execute(){
MySQL.ExecuteSqlTran(listTask);
}
/// <summary>
/// 任务数
/// </summary>
/// <returns></returns>
public int TaskCount()
{
return listTask.Count;
}
}
...全文
279 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weishaolin13x 2016-03-29
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
自打 DbProviderFactory 类型往下,ADO.NET都对什么Command、Patameter、Transaction 等等进行了抽象。 学点 ADO.NET吧。不要让人发现你没有学过 ADO.NET 的抽象机制。
是有抽象,但有个问题 ,不同数据库的数据类型是不 一样的,你如何抽象数据类型呢 ? sql语句也有区别,
weishaolin13x 2016-03-29
  • 打赏
  • 举报
回复
是有抽象,但有个问题 ,不同数据库的数据类型是不 一样的,你如何抽象数据类型呢 ? sql语句也有区别,
  • 打赏
  • 举报
回复
自打 DbProviderFactory 类型往下,ADO.NET都对什么Command、Patameter、Transaction 等等进行了抽象。 学点 ADO.NET吧。不要让人发现你没有学过 ADO.NET 的抽象机制。
  • 打赏
  • 举报
回复
ADO.NET 本来就已经对于各类关系数据库进行了抽象,已经有 DbTransaction 类型可用,你何必要自己另外发明一套呢? BLL层本来就是直接调用 DAL 层代码的,而这个 DAL 层可以直截了当地是 ADO.NET。如果你需要抽象处理各种关系数据库移植问题,那么你应该先理解 ADO.NET 自身,例如理解 DBFactory 的机制。不要自己完全地另外写一堆东西,只要在人家的现成的机制上稍作扩展即可。
weishaolin13x 2016-03-29
  • 打赏
  • 举报
回复
public void Execute(){ MySQL.ExecuteSqlTran(listTask); } 跟MySQL绑到了一起不好, 得换一种方式 。。。
weishaolin13x 2016-03-22
  • 打赏
  • 举报
回复
事务放到业务层,不是放到数据处理层, 不需要在业务层传递Connection对象,业务层也是不允许访问Connection的
weishaolin13x 2016-03-22
  • 打赏
  • 举报
回复
        /// <summary>
        /// 批量添加任务
        /// </summary>
        /// <param name="taskList"></param>
        public void AddTaskList(List<Task> taskList)
        {
            foreach (Task task in taskList)
            {
                listTask.Add(task);
                task.SetTaskIndex(listTask.Count);
                listTask.Add(task);
            }
        }
江南小鱼 2016-03-22
  • 打赏
  • 举报
回复
猫意思?撸主要表达神马呢?

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧