C# 事务、命令和连接之间的关系是什么?
遵循代码所做的操作: 创建一个事务作用域 将创建并打开一个连接,并在事务中登记它 在步骤1中创建的作用域 使用已打开的连接提交命令 连接已关闭 将创建一个新的事务作用域 相同的连接被打开,这会引发 由新事务创建的新事务中的连接 步骤5中的作用域实例 使用已打开的连接提交命令 第一个事务作用域已完成并被处置,紧接着 那是第二个 在该连接上执行相同的命令会发生什么?即使在调用完成之前连接已关闭,这些命令是否已提交;处置;关于第一个事务范围 我认为,事务根本不由连接管理,即使一个连接被两个事务使用,发送到不同事务的命令也根本不相关,不管它们是使用相同的连接发送到服务器的。我是对的 请遵循以下代码:C# 事务、命令和连接之间的关系是什么?,c#,.net,transactions,transactionscope,sqlconnection,C#,.net,Transactions,Transactionscope,Sqlconnection,遵循代码所做的操作: 创建一个事务作用域 将创建并打开一个连接,并在事务中登记它 在步骤1中创建的作用域 使用已打开的连接提交命令 连接已关闭 将创建一个新的事务作用域 相同的连接被打开,这会引发 由新事务创建的新事务中的连接 步骤5中的作用域实例 使用已打开的连接提交命令 第一个事务作用域已完成并被处置,紧接着 那是第二个 在该连接上执行相同的命令会发生什么?即使在调用完成之前连接已关闭,这些命令是否已提交;处置;关于第一个事务范围 我认为,事务根本不由连接管理,即使一个连接被两个事务使用,发
using (TransactionScope transactionScope1 = new TransactionScope())
{
traceSource.TraceEvent(TraceEventType.Information, 0, "BEFORE CREATE THE TRANSACTION SCOPE, OPEN AND USE THE CONNECTION");
SqlConnection connection = new SqlConnection(CLEAR_CONNECTION_STRING);
connection.Open();
ExecuteCommand1(connection);
connection.Close();
traceSource.TraceEvent(TraceEventType.Information, 0, "AFTER CREATE THE TRANSACTION SCOPE, OPEN THE CONNECTION, USES IT AND CLOSE IT.");
traceSource.TraceEvent(TraceEventType.Information, 0, "BEFORE CALL TransactionScope transactionScope2 = new TransactionScope(TransactionScopeOption.RequiresNew); .");
using (TransactionScope transactionScope2 = new TransactionScope(TransactionScopeOption.RequiresNew))
{
traceSource.TraceEvent(TraceEventType.Information, 0, "BEFORE CALL connection.Open(); .");
connection.Open();
traceSource.TraceEvent(TraceEventType.Information, 0, "BEFORE EXECUTE THE SECOND COMMAND.");
ExecuteCommand2(connection);
traceSource.TraceEvent(TraceEventType.Information, 0, "BEFORE CLOSE THE CONNECTION.");
connection.Close();
traceSource.TraceEvent(TraceEventType.Information, 0, "AFTER CLOSE THE CONNECTION.");
traceSource.TraceEvent(TraceEventType.Information, 0, "BEFORE transactionScope2.Complete(); .");
transactionScope2.Complete();
}
traceSource.TraceEvent(TraceEventType.Information, 0, "BEFORE transactionScope1.Complete(); .");
transactionScope1.Complete();
traceSource.TraceEvent(TraceEventType.Information, 0, "BEFORE transactionScope1.Dispose(); .");
}
遵循日志内容:
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.7789227Z" />
<Source Name="TransactionsLab" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>BEFORE CREATE THE TRANSACTION SCOPE, OPEN AND USE THE CONNECTION</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.7799199Z" />
<Source Name="System.Transactions" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/2004/06/System/Transactions/TransactionCreated</TraceIdentifier>
<Description>Transaction Created</Description>
<AppDomain>TransactionsLab.vshost.exe</AppDomain>
<ExtendedData xmlns="http://schemas.microsoft.com/2004/03/Transactions/TransactionCreatedTraceRecord">
<TraceSource>[Lightweight]</TraceSource>
<TransactionTraceIdentifier>
<TransactionIdentifier>5a0cb948-beb4-4143-bccb-4dbd575daf55:16</TransactionIdentifier>
<CloneIdentifier>1</CloneIdentifier>
</TransactionTraceIdentifier>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.7809183Z" />
<Source Name="System.Transactions" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/2004/06/System/Transactions/TransactionScopeCreated</TraceIdentifier>
<Description>TransactionScope Created</Description>
<AppDomain>TransactionsLab.vshost.exe</AppDomain>
<ExtendedData xmlns="http://schemas.microsoft.com/2004/03/Transactions/TransactionScopeCreatedTraceRecord">
<TraceSource>[Base]</TraceSource>
<TransactionTraceIdentifier>
<TransactionIdentifier>5a0cb948-beb4-4143-bccb-4dbd575daf55:16</TransactionIdentifier>
<CloneIdentifier>2</CloneIdentifier>
</TransactionTraceIdentifier>
<TransactionScopeResult>CreatedTransaction</TransactionScopeResult>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.7819208Z" />
<Source Name="System.Transactions" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/2004/06/System/Transactions/Enlistment</TraceIdentifier>
<Description>Enlistment Created</Description>
<AppDomain>TransactionsLab.vshost.exe</AppDomain>
<ExtendedData xmlns="http://schemas.microsoft.com/2004/03/Transactions/EnlistmentTraceRecord">
<TraceSource>[Lightweight]</TraceSource>
<EnlistmentTraceIdentifier>
<ResourceManagerId>00000000-0000-0000-0000-000000000000</ResourceManagerId>
<TransactionTraceIdentifier>
<TransactionIdentifier>5a0cb948-beb4-4143-bccb-4dbd575daf55:16</TransactionIdentifier>
<CloneIdentifier>2</CloneIdentifier>
</TransactionTraceIdentifier>
<EnlistmentIdentifier>0</EnlistmentIdentifier>
</EnlistmentTraceIdentifier>
<EnlistmentType>PromotableSinglePhase</EnlistmentType>
<EnlistmentOptions>None</EnlistmentOptions>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8400190Z" />
<Source Name="TransactionsLab" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>AFTER CREATE THE TRANSACTION SCOPE, OPEN THE CONNECTION, USES IT AND CLOSE IT.</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8412412Z" />
<Source Name="TransactionsLab" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>BEFORE CALL TransactionScope transactionScope2 = new TransactionScope(TransactionScopeOption.RequiresNew); .</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8422462Z" />
<Source Name="System.Transactions" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/2004/06/System/Transactions/TransactionCreated</TraceIdentifier>
<Description>Transaction Created</Description>
<AppDomain>TransactionsLab.vshost.exe</AppDomain>
<ExtendedData xmlns="http://schemas.microsoft.com/2004/03/Transactions/TransactionCreatedTraceRecord">
<TraceSource>[Lightweight]</TraceSource>
<TransactionTraceIdentifier>
<TransactionIdentifier>5a0cb948-beb4-4143-bccb-4dbd575daf55:17</TransactionIdentifier>
<CloneIdentifier>1</CloneIdentifier>
</TransactionTraceIdentifier>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8432442Z" />
<Source Name="System.Transactions" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/2004/06/System/Transactions/TransactionScopeCreated</TraceIdentifier>
<Description>TransactionScope Created</Description>
<AppDomain>TransactionsLab.vshost.exe</AppDomain>
<ExtendedData xmlns="http://schemas.microsoft.com/2004/03/Transactions/TransactionScopeCreatedTraceRecord">
<TraceSource>[Base]</TraceSource>
<TransactionTraceIdentifier>
<TransactionIdentifier>5a0cb948-beb4-4143-bccb-4dbd575daf55:17</TransactionIdentifier>
<CloneIdentifier>2</CloneIdentifier>
</TransactionTraceIdentifier>
<TransactionScopeResult>CreatedTransaction</TransactionScopeResult>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8442750Z" />
<Source Name="TransactionsLab" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>BEFORE CALL connection.Open(); .</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8452783Z" />
<Source Name="System.Transactions" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/2004/06/System/Transactions/Enlistment</TraceIdentifier>
<Description>Enlistment Created</Description>
<AppDomain>TransactionsLab.vshost.exe</AppDomain>
<ExtendedData xmlns="http://schemas.microsoft.com/2004/03/Transactions/EnlistmentTraceRecord">
<TraceSource>[Lightweight]</TraceSource>
<EnlistmentTraceIdentifier>
<ResourceManagerId>00000000-0000-0000-0000-000000000000</ResourceManagerId>
<TransactionTraceIdentifier>
<TransactionIdentifier>5a0cb948-beb4-4143-bccb-4dbd575daf55:17</TransactionIdentifier>
<CloneIdentifier>2</CloneIdentifier>
</TransactionTraceIdentifier>
<EnlistmentIdentifier>0</EnlistmentIdentifier>
</EnlistmentTraceIdentifier>
<EnlistmentType>PromotableSinglePhase</EnlistmentType>
<EnlistmentOptions>None</EnlistmentOptions>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8462788Z" />
<Source Name="TransactionsLab" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>BEFORE EXECUTE THE SECOND COMMAND.</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8522799Z" />
<Source Name="TransactionsLab" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>BEFORE CLOSE THE CONNECTION.</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8532787Z" />
<Source Name="TransactionsLab" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>AFTER CLOSE THE CONNECTION.</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8532787Z" />
<Source Name="TransactionsLab" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>BEFORE transactionScope2.Complete(); .</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8542792Z" />
<Source Name="TransactionsLab" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>BEFORE transactionScope2.Dispose(); .</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8552784Z" />
<Source Name="System.Transactions" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/2004/06/System/Transactions/TransactionScopeDisposed</TraceIdentifier>
<Description>TransactionScope Disposed</Description>
<AppDomain>TransactionsLab.vshost.exe</AppDomain>
<ExtendedData xmlns="http://schemas.microsoft.com/2004/03/Transactions/TransactionScopeDisposedTraceRecord">
<TraceSource>[Base]</TraceSource>
<TransactionTraceIdentifier>
<TransactionIdentifier>5a0cb948-beb4-4143-bccb-4dbd575daf55:17</TransactionIdentifier>
<CloneIdentifier>2</CloneIdentifier>
</TransactionTraceIdentifier>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8562814Z" />
<Source Name="TransactionsLab" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>BEFORE transactionScope1.Complete(); .</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8572798Z" />
<Source Name="TransactionsLab" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>BEFORE transactionScope1.Dispose(); .</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8582802Z" />
<Source Name="System.Transactions" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="10" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/2004/06/System/Transactions/TransactionScopeDisposed</TraceIdentifier>
<Description>TransactionScope Disposed</Description>
<AppDomain>TransactionsLab.vshost.exe</AppDomain>
<ExtendedData xmlns="http://schemas.microsoft.com/2004/03/Transactions/TransactionScopeDisposedTraceRecord">
<TraceSource>[Base]</TraceSource>
<TransactionTraceIdentifier>
<TransactionIdentifier>5a0cb948-beb4-4143-bccb-4dbd575daf55:16</TransactionIdentifier>
<CloneIdentifier>2</CloneIdentifier>
</TransactionTraceIdentifier>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2014-12-19T20:32:30.8672795Z" />
<Source Name="System.Transactions" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="TransactionsLab.vshost" ProcessID="11004" ThreadID="2" />
<Channel/>
<Computer>PCNAME</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Diagnostics/AppDomainUnload</TraceIdentifier>
<Description>AppDomain unloading.</Description>
<AppDomain>TransactionsLab.vshost.exe</AppDomain>
<ExtendedData xmlns="http://schemas.microsoft.com/2004/03/Transactions/DictionaryTraceRecord">
<AppDomain.FriendlyName>TransactionsLab.vshost.exe</AppDomain.FriendlyName>
<ProcessName>TransactionsLab.vshost</ProcessName>
<ProcessId>11004</ProcessId>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
那代码真的很难读。您不能使用@DJKRAZE重新格式化以正确嵌套作用域吗?@DJKRAZE是的,我在Google中查看了MSDN文档并进行了搜索,但是我在那里找到的信息没有清楚地回答我在这里提出的问题。@usr我编辑了代码,请告诉我您现在是否更清楚。谢谢跟踪消息使代码有点混乱,但它们对于了解正在发生的事情非常重要,我的意思是,了解正在登录到同一文件的事务管理器中c语句的效果。看起来您遗漏了执行第二个命令的调用以及步骤7。@Michael谢谢。代码和日志编辑,没有任何变化,但你是对的,粘贴代码我忘记了那个电话;