나는 TransactionScope의 권고 된 사용처럼 작동하지만 주변 트랜잭션 대신 주변 연결이있는 코드가 있습니다.TransactionScope를 기존 연결과 함께 사용할 수 있습니까?
기존 연결에서 TransactionScope 개체를 사용하는 방법이 있습니까? 아니면이 용도로 .Net 프레임 워크에 대안이 있습니까?
나는 TransactionScope의 권고 된 사용처럼 작동하지만 주변 트랜잭션 대신 주변 연결이있는 코드가 있습니다.TransactionScope를 기존 연결과 함께 사용할 수 있습니까?
기존 연결에서 TransactionScope 개체를 사용하는 방법이 있습니까? 아니면이 용도로 .Net 프레임 워크에 대안이 있습니까?
실제로 한 가지 방법이 있습니다.
connection.EnlistTransaction(Transaction.Current)
그것은 작동하고 필요하지 않을 경우 분산에 거래를 촉진 나던 (반면에 어떤 문서를 말한다)
HTH
TransactionScope에 연결을 등록하려면 연결 문자열에 'Enlist=true'
을 지정하고 해당 TransactionScope 개체의 범위에서 연결을 열어야합니다.
기존 연결에서 SqlConnection.BeginTransaction
을 사용할 수 있습니다.
업데이트 : 당신은이 같은 BeginTransaction
를 사용할 수 :
아니, 연결이 후 열어야합니다 :
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = connection.BeginTransaction("SampleTransaction");
// Must assign both transaction object and connection
// to Command object for a pending local transaction
command.Connection = connection;
command.Transaction = transaction;
...
...
}
는 더 많은 연구 후, 내 질문에 대한 답이 밝혀졌다 TransactionScope 개체가 인스턴스화됩니다.
것은이 연결이 TransactionScope에 인스턴스화 사전에 개방된다; 그러므로 내 질문에 대한 이유. –
@Mitch, connection.BeginTransaction ("SampleTransaction")은 모든 시나리오에서 분산 트랜잭션 (DTC)으로 승격됩니까? 그렇다면 그 시나리오는 무엇입니까? – Baig