Để tranh thủ kết nối vào một TransactionScope, bạn cần chỉ định 'Enlist=true'
trong chuỗi kết nối của nó và mở kết nối trong phạm vi đối tượng TransactionScope đó.
Bạn có thể sử dụng SqlConnection.BeginTransaction
trên kết nối hiện có.
Cập nhật: Bạn có thể sử dụng BeginTransaction
như thế này:
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;
...
...
}
Nguồn
2009-06-01 10:55:20
Có điều là, khi kết nối được mở trước instantiation TransactionScope; do đó lý do cho câu hỏi của tôi. –
@Mitch, Không phải là kết nối.BeginTransaction ("SampleTransaction") quảng bá cho một giao dịch phân tán (DTC) trong bất kỳ kịch bản nào? Nếu có, thì các kịch bản đó là gì? – Baig