C# 未提交事务隔离级别

C# 未提交事务隔离级别,c#,transactions,isolation-level,read-uncommitted,C#,Transactions,Isolation Level,Read Uncommitted,我正在尝试使用TransactionScope对象来理解事务在c#中是如何工作的。我在SQL server中了解它们,但我不知道如何在c中验证这一点。例如,我想检查是否将IsolationLevel设置为ReadUnCommitted,如何在代码中验证此行为 目前这是我的简单代码,我想测试的是,当我的第一个Update命令正在执行且未提交/回滚时,如何验证其他事务是否能够读取它影响的数据?有人能帮我举个代码示例吗 这是我的密码: public void TransferAmount(Accoun

我正在尝试使用
TransactionScope
对象来理解事务在c#中是如何工作的。我在SQL server中了解它们,但我不知道如何在
c
中验证这一点。例如,我想检查是否将
IsolationLevel
设置为
ReadUnCommitted
,如何在代码中验证此行为

目前这是我的简单代码,我想测试的是,当我的第一个
Update
命令正在执行且未提交/回滚时,如何验证其他事务是否能够读取它影响的数据?有人能帮我举个代码示例吗

这是我的密码:

public void TransferAmount(Account a)
{
    bool debit = false;
    bool credit= true;
    var option = new TransactionOptions();
    option.IsolationLevel = System.Transactions.IsolationLevel.ReadUnCommitted;
    try
    {
        using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.Required, option))
        {
            using (IDbCommand cmd = Idbconnection.CreateCommand())
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "usp_Update_Debit";
                IDataParameter param = cmd.CreateParameter();
                param.ParameterName = "@mDebitAmount";
                param.Value = a.Amount;
                cmd.Parameters.Add(param);
                Idbconnection.Open();
                debit = cmd.ExecuteNonQuery() == 1;
            }
            using (IDbCommand cmd = Idbconnection.CreateCommand())
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "usp_Update_Credit";
                IDataParameter param = cmd.CreateParameter();
                param.ParameterName = "@mCreditAmount";
                param.Value = a.Amount;
                cmd.Parameters.Add(param);
                credit = cmd.ExecuteNonQuery() == 1;
            }
            if (debit == credit)
                transactionScope.Complete();
        }
    }
    catch (Exception ex)
    {
        System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
        throw new FaultException(new FaultReason(new FaultReasonText(ex.Message)));
    }
}

您可以在启用调试的情况下运行应用程序的多个实例,并在需要的位置停止实例上的执行,然后继续运行其他实例。我会使用线程,但这可能更难开始。您可以在调试打开的情况下运行应用程序的多个实例,并在希望的时间点停止实例上的执行,然后继续运行其他实例。我会为此使用线程,但这可能更难开始。