internal OleDbTransaction(OleDbConnection connection, OleDbTransaction transaction, IsolationLevel isolevel) { OleDbConnection.VerifyExecutePermission(); _parentConnection = connection; _parentTransaction = transaction; switch (isolevel) { case IsolationLevel.Unspecified: // OLE DB doesn't support this isolevel on local transactions isolevel = IsolationLevel.ReadCommitted; break; case IsolationLevel.Chaos: case IsolationLevel.ReadUncommitted: case IsolationLevel.ReadCommitted: case IsolationLevel.RepeatableRead: case IsolationLevel.Serializable: case IsolationLevel.Snapshot: break; default: throw ADP.InvalidIsolationLevel(isolevel); // MDAC 74269 } _isolationLevel = isolevel; }
override public void EnlistTransaction(SysTx.Transaction transaction) // MDAC 78997 { OleDbConnection.VerifyExecutePermission(); OleDbConnection outerConnection = Connection; if (null != LocalTransaction) { throw ADP.LocalTransactionPresent(); } EnlistTransactionInternal(transaction); }
internal void EnlistTransactionInternal(SysTx.Transaction transaction) { OleDbConnection.VerifyExecutePermission(); SysTx.IDtcTransaction oleTxTransaction = ADP.GetOletxTransaction(transaction); IntPtr hscp; Bid.ScopeEnter(out hscp, "<oledb.ITransactionJoin.JoinTransaction|API|OLEDB> %d#\n", ObjectID); try { using (ITransactionJoinWrapper transactionJoin = ITransactionJoin()) { if (null == transactionJoin.Value) { throw ODB.TransactionsNotSupported(Provider, (Exception)null); } transactionJoin.Value.JoinTransaction(oleTxTransaction, (int)IsolationLevel.Unspecified, 0, IntPtr.Zero); _unEnlistDuringDeactivate = (null != transaction); } } finally { Bid.ScopeLeave(ref hscp); } EnlistedTransaction = transaction; }