我目前的應用程序在一個巨大的使用語句與連接的所有數據庫操作,以確保事務提交或回滾完全,當前如果我有通用的方法,他們通過當前打開的OleDbConnection它可以被使用。C#與OleDB和Oracle的TransactionScope
我想使用TransactionScope來代替外部使用部分。請參閱我的測試代碼如下:
private void Test() {
string _connectionString = "Provider=OraOLEDB.Oracle.1;Password=XXXXXXXX;Persist Security Info=True;User ID=XXXXXXXX;Data Source=XXXXXXX;min pool size=1;incr pool size=5;decr pool size=2;connection timeout=60;";
using (TransactionScope _ts = new TransactionScope(TransactionScopeOption.Required))
{
using (OleDbConnection _cn = new OleDbConnection(_connectionString))
{
_cn.Open(); // Errors Here!
using (OleDbCommand _cmd = new OleDbCommand())
{
_cmd.Connection = _cn;
_cmd.CommandText = "insert into testtable (TEST) values ('FIRST')";
_cmd.CommandType = CommandType.Text;
_cmd.ExecuteNonQuery();
}
}
using (OleDbConnection _cn = new OleDbConnection(_connectionString))
{
_cn.Open();
using (OleDbCommand _cmd = new OleDbCommand())
{
_cmd.Connection = _cn;
_cmd.CommandText = "insert into testtable (TEST) values ('SECOND')";
_cmd.CommandType = CommandType.Text;
_cmd.ExecuteNonQuery();
}
}
}
}
我收到的錯誤是「無法登記交易。」我讀過Oracle不喜歡使用TransactionScope(Problems with TransactionScope and Oracle),但它似乎符合我需要實現的功能。我發現關於如何跨連接池連接橋接單個事務的信息非常少。
編輯 - 2月11日
我從OLEDB切換到ODP.Net並設法得到一個官方的Oracle ORA錯誤了......
ORA-02048: attempt to begin distributed transaction without logging on
從我可以找到
可悲的是,我認爲它的Oracle錯誤?我發現論壇帖子暗示版本10.2.0.2有這個bug,但我在10.2.0.4?
希望有人能幫助!由於