[英]Getting IDs back from an Oracle query using .net core and Oracle.ManagedDataAccess.Core
[英]Oracle.ManagedDataAccess.Core - Transaction Scope Issue
我正在嘗試將項目轉換為 .Net Core,但我遇到了絆腳石。
當我在一個事務范圍內打開兩個不同的 oracle 連接時,收到以下錯誤:
"Operation is not supported on this platform."
" at OracleInternal.MTS.MTSRMManager.CCPEnlistDistributedTxnToSysTxn(OracleConnectionImpl connImpl, Transaction txn, MTSTxnRM txnRM, MTSTxnBranch txnBranch)
at OracleInternal.MTS.MTSRMManager.CCPEnlistTransaction(OracleConnectionImpl connImpl, Transaction transaction, MTSTxnRM txnRM, MTSTxnBranch txnBranch)
at OracleInternal.ConnectionPool.PoolManager`3.GetEnlisted(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, OracleConnection connRefForCriteria)
at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword, OracleConnection connRefForCriteria)
at Oracle.ManagedDataAccess.Client.OracleConnection.Open()"
打開第二個連接時,下面的代碼會導致此錯誤。 此外,這不會發生在標准框架 Oracle.ManagedDataAccess 上。 它只發生在 Oracle.ManagedDataAccess.Core 版本上。
我的猜測是它看起來與連接池有關,但我可以使用一些幫助。
如果對每個連接使用相同的連接字符串,則沒有問題。 僅當您有兩個不同的連接時才會發生。
using (TransactionScope scope = new TransactionScope())
{
using (var conn = new OracleConnection(connectionString1))
{
conn.Open();
}
using (var conn = new OracleConnection(connectionString2))
{
conn.Open(); //Exception occurs here
}
scope.Complete();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.