![](/img/trans.png)
[英]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.