1
我有一個小概念驗證分佈式事務應用程序,它將一個簡單的插入到兩個表中 - 一個是MS SQL Server表,另一個是Informix Dynamic Server表。出現異常時會出現問題。如果我使用Informix的OLE DB驅動程序,一切正常 - 兩個插入回滾;如果我使用Informix的.NET數據提供程序,則Informix插入不會回滾。Informix .NET Provider和TransactionScope不回滾
有沒有人對發生了什麼有什麼想法?
在代碼片段中,您會注意到註釋掉的EnlistTransaction()方法。當明確調用時,我得到一個異常,指出該方法未實現。
代碼片段:
private void doTransaction(Boolean commitIndicator)
{
using (TransactionScope tscope = new TransactionScope())
{
using (SqlConnection cn = new SqlConnection { ConnectionString = sql2008Settings.ConnectionString })
{
cn.Open();
using (SqlCommand cmd = cn.CreateCommand())
{
cmd.CommandText = "insert into uom (uom) values ('Test')";
int count = cmd.ExecuteNonQuery();
}
}
using (IfxConnection cn = new IfxConnection())
{
cn.ConnectionString = idnSettings.ConnectionString;
cn.Open();
//cn.EnlistTransaction(Transaction.Current);
using (IfxCommand cmd = cn.CreateCommand())
{
cmd.CommandText = "insert into table_ (code_, description) values ('JEP', 'Test')";
int count = cmd.ExecuteNonQuery();
}
}
if (commitIndicator)
{
}
else
{
throw new Exception("planned failure");
}
tscope.Complete();
}
}
連接字符串:
優秀!更改我的TransactionScope構造函數的竅門,不需要進一步的更改。謝謝。 我已經在我的連接字符串中有enlist = true,但我認爲我搞砸了發佈我的XML的東西。 – 2010-01-21 18:17:29