program.cs

来自「< SQL Server2005程序设计>」· CS 代码 · 共 104 行

CS
104
字号
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Transactions;
using TheRM;

namespace RMUser
{
    class Program
    {
        static void Main(string[] args)
        {
            YourRMInTSC();
            YourRMInTSCWithRollBack();
            TwoInstancesOfYourRM();
            //YourRMWithOtherRM(); // Remember to setup DB before running this one.
        }

        static void YourRMInTSC()
        {
            Console.WriteLine("==========");
            VolatileRM vrm = new VolatileRM("RM1");
            Console.WriteLine("Member Value:" + vrm.MemberValue);

            using (TransactionScope tsc = new TransactionScope())
            {
                vrm.MemberValue = 3;
                tsc.Complete();
            }

            Console.WriteLine("Member Value:" + vrm.MemberValue);
        }

        static void YourRMInTSCWithRollBack()
        {
            Console.WriteLine("==========");
            VolatileRM vrm = new VolatileRM("RM1");
            Console.WriteLine("Member Value:" + vrm.MemberValue);

            using (TransactionScope tsc = new TransactionScope())
            {
                vrm.MemberValue = 3;
                // tsc.Complete(); // <-- Removed!!!
            }

            Console.WriteLine("Member Value:" + vrm.MemberValue);
        }

        static void TwoInstancesOfYourRM()
        {
            Console.WriteLine("==========");
            VolatileRM vrm = new VolatileRM("RM1");
            VolatileRM vrm2 = new VolatileRM("RM2");

            Console.WriteLine("Member Value:" + vrm.MemberValue);
            Console.WriteLine("Member Value:" + vrm2.MemberValue);

            using (TransactionScope tsc = new TransactionScope())
            {
                vrm.MemberValue = 3;
                vrm2.MemberValue = 4;
                tsc.Complete(); 
            }

            Console.WriteLine("Member Value:" + vrm.MemberValue);
            Console.WriteLine("Member Value:" + vrm2.MemberValue);
        }

        static void YourRMWithOtherRM()
        {
            Console.WriteLine("==========");
            string connStr = "Data Source=(local);Initial Catalog=Test1;Integrated Security=SSPI;";
            string cmdText = "Update FromTable Set Amount = Amount - 50";

            VolatileRM vrm = new VolatileRM("RM1");
            Console.WriteLine("Member Value:" + vrm.MemberValue);

            using (TransactionScope tsc = new TransactionScope())
            {
                using (SqlConnection conn1 = new SqlConnection(connStr))
                {
                    SqlCommand cmd1 = conn1.CreateCommand();
                    cmd1.CommandText = cmdText;
                    conn1.Open();
                    cmd1.ExecuteNonQuery();
                }

                vrm.MemberValue = 3;

                tsc.Complete();
            }

            Console.WriteLine("Member Value:" + vrm.MemberValue);
        }
    }
}





⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?