我想做成事務的一系列SP調用(SQL Server 2005中)在周邊的一些部分業務邏輯與C#得到的TransactionScope交易當前連接
using(TransactionScope...)
不幸的一個.NET 2.0的項目,我繼承來自另一個項目的DAL,我不想在那裏做很多更改......問題是每個調用存儲過程的方法都會打開一個新的連接。
所以,我的問題是:有沒有辦法檢索當前事務使用的連接,即從Transaction.Current ??
謝謝
s。
UPDATE:請告訴我這是什麼不對的控制檯應用程序(VS2005,.NET 2.0,SQL Server 2005中)
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Transactions;
namespace ConsoleApplication1
{
public class Program
{
static void Main(string[] args)
{
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
{
Console.WriteLine("1");
test();
Console.WriteLine("2");
test();
}
Console.WriteLine("END");
}
public static void test()
{
string connectionString = @"Persist Security Info=True;User ID=usr123;Password=123;Initial Catalog=db123;Data Source=myserver\myinstance;Connect Timeout=180;";
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
}
}
}
}
如果你是一個TransactionScope內,你可以創建自己的連接,這將自動地(在我認爲的情況下)自己進入範圍。那是你想要避免的嗎? – arootbeer 2010-09-15 15:27:05
是的,DAL中的每個方法都是在對一個新的SqlConnection(「querystring ..」)進行隔離,將其打開(),然後在SqlCommand中使用它。可能問題是每個方法也是Dispose()ing或關閉()它! – socste2 2010-09-15 15:53:38
因此,您試圖查看TransactionScope本身用於與數據庫通信的連接嗎? – arootbeer 2010-09-15 15:56:18