使用 CommittableTransaction 执行显式事务

准备工作

  • 添加 System.Transactions 引用(在解决方案的网站上右键);
  • 引用 System.Transactions 名称空间。

示例讲解

            using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection String"].ConnectionString))
            {
                using (var ct = new CommittableTransaction())
                {
                    conn.Open();
                    conn.EnlistTransaction(ct);//关联事务
                    using (var cmd = new SqlCommand())
                    {
                        cmd.Connection = conn;
                        cmd.CommandType = CommandType.Text;
                        try
                        {
                            cmd.CommandText = "insert into TranTable(Priority) values(1)";
                            cmd.ExecuteNonQuery();
                            cmd.CommandText = "insert into TranTable(Priority) values(256)";
                            cmd.ExecuteNonQuery();
                            ct.Commit();
                            Response.Write("Ok");
                        }
                        catch (SqlException ex)
                        {
                            ct.Rollback();
                            Response.Write("Error:" + ex.Message);
                        }
                    }
                }
                conn.Close();
            }

参考http://msdn.microsoft.com/zh-cn/library/ms172146(v=vs.90).aspx


posted @ 2013-04-25 22:13  清山博客  阅读(272)  评论(0编辑  收藏  举报