コード例 #1
0
            public override void CreateUninitializedItem(HttpContext context, string id, int timeout)
            {
                OracleConnectionHolder connectionHolder = (OracleConnectionHolder)null;
                OracleCommand          oracleCommand    = (OracleCommand)null;

                try
                {
                    connectionHolder = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    byte[] buffer;
                    int    length;
                    OracleSessionStateStore.SerializeSessionStateStoreData(this.CreateNewStoreData(context, timeout), 2000, out buffer, out length);
                    oracleCommand = new OracleCommand("ora_aspnet_Sessn_InsUninitItem", connectionHolder.Connection);
                    ((DbCommand)oracleCommand).CommandTimeout = this.m_CommandTimeout;
                    ((DbCommand)oracleCommand).CommandType    = CommandType.StoredProcedure;
                    oracleCommand.Parameters.Add(new OracleParameter("OutResult", (OracleDbType)112, ParameterDirection.ReturnValue));
                    ((DbParameter)oracleCommand.Parameters[0]).DbType = DbType.Int32;
                    oracleCommand.Parameters.Add(new OracleParameter(nameof(id), (OracleDbType)119, OracleSessionStateStore.ID_LENGTH));
                    ((DbParameter)oracleCommand.Parameters[1]).Value = (object)(id + this.m_appID);
                    oracleCommand.Parameters.Add(new OracleParameter("itemShort", (OracleDbType)120, 2000));
                    ((DbParameter)oracleCommand.Parameters[2]).Size  = length;
                    ((DbParameter)oracleCommand.Parameters[2]).Value = (object)buffer;
                    oracleCommand.Parameters.Add(new OracleParameter(nameof(timeout), (OracleDbType)112));
                    ((DbParameter)oracleCommand.Parameters[3]).Value = (object)timeout;
                    ((DbCommand)oracleCommand).ExecuteNonQuery();
                }
                catch
                {
                    throw;
                }
                finally
                {
                    ((Component)oracleCommand)?.Dispose();
                    connectionHolder?.Close();
                }
            }
コード例 #2
0
        public override bool DeleteRole(string roleName, bool throwOnPopulatedRole)
        {
            bool flag;

            Util.CheckParameter(ref roleName, true, true, true, 256, "roleName");
            OracleConnectionHolder connection    = null;
            OracleCommand          oracleCommand = null;

            try
            {
                try
                {
                    connection    = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    oracleCommand = new OracleCommand("ora_aspnet_Roles_DeleteRole", connection.Connection)
                    {
                        CommandTimeout = this.m_CommandTimeout,
                        CommandType    = CommandType.StoredProcedure
                    };
                    oracleCommand.Parameters.Add(new OracleParameter("OutResult", OracleDbType.Int32, ParameterDirection.ReturnValue));
                    oracleCommand.Parameters[0].DbType = DbType.Int32;
                    oracleCommand.Parameters.Add(new OracleParameter("ApplicationName_", OracleDbType.NVarchar2));
                    oracleCommand.Parameters[1].Value = this.m_ApplicationName;
                    oracleCommand.Parameters.Add(new OracleParameter("RoleName_", OracleDbType.NVarchar2));
                    oracleCommand.Parameters[2].Value = roleName;
                    oracleCommand.Parameters.Add(new OracleParameter("DeleteOnlyIfRoleIsEmpty", OracleDbType.Int32));
                    if (!throwOnPopulatedRole)
                    {
                        oracleCommand.Parameters[3].Value = 0;
                    }
                    else
                    {
                        oracleCommand.Parameters[3].Value = 1;
                    }
                    oracleCommand.ExecuteNonQuery();
                    int value = (int)oracleCommand.Parameters[0].Value;
                    if (value == -3005)
                    {
                        throw new ProviderException(MsgManager.GetMsg(ErrRes.ROLE_IS_NOT_EMPTY, new string[0]));
                    }
                    flag = value == 0;
                }
                catch
                {
                    throw;
                }
            }
            finally
            {
                if (oracleCommand != null)
                {
                    oracleCommand.Dispose();
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
            return(flag);
        }
コード例 #3
0
        /// <summary>
        /// Configures the data bus to store data in a central Oracle table
        /// </summary>
        public static void StoreInOracle(this StandardConfigurer <IDataBusStorage> configurer, string connectionString, string tableName, Action <OracleConnection> additionalConnectionSetup = null, bool enlistInAmbientTransaction = false, bool automaticallyCreateTables = true)
        {
            if (configurer == null)
            {
                throw new ArgumentNullException(nameof(configurer));
            }
            if (connectionString == null)
            {
                throw new ArgumentNullException(nameof(connectionString));
            }
            if (tableName == null)
            {
                throw new ArgumentNullException(nameof(tableName));
            }

            configurer.Register(c =>
            {
                var loggerFactory    = c.Get <IRebusLoggerFactory>();
                var rebusTime        = c.Get <IRebusTime>();
                var connectionHelper = new OracleConnectionHelper(connectionString, additionalConnectionSetup, enlistInAmbientTransaction);
                var storage          = new OracleDataBusStorage(connectionHelper, tableName, loggerFactory, rebusTime);
                if (automaticallyCreateTables)
                {
                    storage.EnsureTableIsCreated();
                }
                return(storage);
            });
        }
コード例 #4
0
ファイル: UnitTestHelper.cs プロジェクト: kurtrips/tc
        /// <summary>
        /// Executes sql statements from a file on the databse.
        /// </summary>
        /// <param name="fileName">The name of the file conatining the statements</param>
        internal static void ExecuteStatementsOfSqlFile(string fileName)
        {
            //Load the insert statements from file
            string fileContent = File.ReadAllText(fileName);

            string[] statements = fileContent.Split(';');

            //Get the connection string from config
            string connectionName = ConfigManager.GetInstance().GetValue(
                HermesScheduleItemPersistenceProvider.DefaultNamespace, "connectionName");

            //Run each insert statement
            using (OracleConnection conn = OracleConnectionHelper.GetPooledConnection(null, connectionName))
            {
                conn.Open();

                using (OracleCommand command = new OracleCommand())
                {
                    foreach (string statement in statements)
                    {
                        command.CommandText = statement;
                        command.Connection  = conn;
                        command.ExecuteNonQuery();
                    }
                }
            }
        }
コード例 #5
0
            public override void ResetItemTimeout(HttpContext context, string id)
            {
                OracleConnectionHolder connectionHolder = (OracleConnectionHolder)null;
                OracleCommand          oracleCommand    = (OracleCommand)null;

                try
                {
                    connectionHolder = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    oracleCommand    = new OracleCommand("ora_aspnet_Sessn_ResetTimeout", connectionHolder.Connection);
                    ((DbCommand)oracleCommand).CommandTimeout = this.m_CommandTimeout;
                    ((DbCommand)oracleCommand).CommandType    = CommandType.StoredProcedure;
                    oracleCommand.Parameters.Add(new OracleParameter("OutResult", (OracleDbType)112, ParameterDirection.ReturnValue));
                    ((DbParameter)oracleCommand.Parameters[0]).DbType = DbType.Int32;
                    oracleCommand.Parameters.Add(new OracleParameter(nameof(id), (OracleDbType)119, OracleSessionStateStore.ID_LENGTH));
                    ((DbParameter)oracleCommand.Parameters[1]).Value = (object)(id + this.m_appID);
                    ((DbCommand)oracleCommand).ExecuteNonQuery();
                }
                catch
                {
                    throw;
                }
                finally
                {
                    ((Component)oracleCommand)?.Dispose();
                    connectionHolder?.Close();
                }
            }
コード例 #6
0
 /// <summary>
 /// Constructs the timeout manager
 /// </summary>
 public OracleTimeoutManager(OracleConnectionHelper connectionHelper, string tableName, IRebusLoggerFactory rebusLoggerFactory)
 {
     if (rebusLoggerFactory == null)
     {
         throw new ArgumentNullException(nameof(rebusLoggerFactory));
     }
     _connectionHelper = connectionHelper ?? throw new ArgumentNullException(nameof(connectionHelper));
     _tableName        = tableName ?? throw new ArgumentNullException(nameof(tableName));
     _log = rebusLoggerFactory.GetLogger <OracleTimeoutManager>();
 }
コード例 #7
0
        public override string[] GetAllRoles()
        {
            string[] strArrays;
            OracleConnectionHolder connection       = null;
            OracleCommand          oracleCommand    = null;
            OracleDataReader       oracleDataReader = null;

            try
            {
                try
                {
                    StringCollection stringCollections = new StringCollection();
                    connection    = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    oracleCommand = new OracleCommand("ora_aspnet_Roles_GetAllRoles", connection.Connection)
                    {
                        CommandTimeout = this.m_CommandTimeout,
                        CommandType    = CommandType.StoredProcedure
                    };
                    OracleParameter oracleParameter = oracleCommand.Parameters.Add("OutResult", OracleDbType.Int32, ParameterDirection.ReturnValue);
                    oracleParameter.DbType = DbType.Int32;
                    OracleParameter mApplicationName = oracleCommand.Parameters.Add("ApplicationName_", OracleDbType.NVarchar2);
                    mApplicationName.Value = this.m_ApplicationName;
                    oracleCommand.Parameters.Add("RoleCursor", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
                    oracleDataReader = oracleCommand.ExecuteReader();
                    while (oracleDataReader.Read())
                    {
                        stringCollections.Add(oracleDataReader.GetString(0));
                    }
                    string[] strArrays1 = new string[stringCollections.Count];
                    stringCollections.CopyTo(strArrays1, 0);
                    strArrays = strArrays1;
                }
                catch
                {
                    throw;
                }
            }
            finally
            {
                if (oracleDataReader != null)
                {
                    oracleDataReader.Dispose();
                }
                if (oracleCommand != null)
                {
                    oracleCommand.Dispose();
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
            return(strArrays);
        }
コード例 #8
0
 /// <summary>
 /// Creates the data storage
 /// </summary>
 public OracleDataBusStorage(OracleConnectionHelper connectionHelper, string tableName, IRebusLoggerFactory rebusLoggerFactory, IRebusTime rebusTime)
 {
     if (rebusLoggerFactory == null)
     {
         throw new ArgumentNullException(nameof(rebusLoggerFactory));
     }
     _connectionHelper = connectionHelper ?? throw new ArgumentNullException(nameof(connectionHelper));
     _table            = new DbName(tableName) ?? throw new ArgumentNullException(nameof(tableName));
     _log       = rebusLoggerFactory.GetLogger <OracleDataBusStorage>();
     _rebusTime = rebusTime ?? throw new ArgumentNullException(nameof(rebusTime));
 }
コード例 #9
0
 /// <summary>
 /// Constructs the subscription storage, storing subscriptions in the specified <paramref name="tableName"/>.
 /// If <paramref name="isCentralized"/> is true, subscribing/unsubscribing will be short-circuited by manipulating
 /// subscriptions directly, instead of requesting via messages
 /// </summary>
 public OracleSubscriptionStorage(OracleConnectionHelper connectionHelper, string tableName, bool isCentralized, IRebusLoggerFactory rebusLoggerFactory)
 {
     if (rebusLoggerFactory == null)
     {
         throw new ArgumentNullException(nameof(rebusLoggerFactory));
     }
     _connectionHelper = connectionHelper ?? throw new ArgumentNullException(nameof(connectionHelper));
     _tableName        = tableName ?? throw new ArgumentNullException(nameof(tableName));
     IsCentralized     = isCentralized;
     _log = rebusLoggerFactory.GetLogger <OracleSubscriptionStorage>();
 }
コード例 #10
0
        public override void CreateRole(string roleName)
        {
            Util.CheckParameter(ref roleName, true, true, true, 256, "roleName");
            OracleConnectionHolder connection    = null;
            OracleCommand          oracleCommand = null;

            try
            {
                try
                {
                    connection    = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    oracleCommand = new OracleCommand("ora_aspnet_Roles_CreateRole", connection.Connection)
                    {
                        CommandTimeout = this.m_CommandTimeout,
                        CommandType    = CommandType.StoredProcedure
                    };
                    oracleCommand.Parameters.Add(new OracleParameter("OutResult", OracleDbType.Int32, ParameterDirection.ReturnValue));
                    oracleCommand.Parameters[0].DbType = DbType.Int32;
                    oracleCommand.Parameters.Add(new OracleParameter("ApplicationName_", OracleDbType.NVarchar2));
                    oracleCommand.Parameters[1].Value = this.m_ApplicationName;
                    oracleCommand.Parameters.Add(new OracleParameter("RoleName_", OracleDbType.NVarchar2));
                    oracleCommand.Parameters[2].Value = roleName;
                    oracleCommand.ExecuteNonQuery();
                    int value = (int)oracleCommand.Parameters[0].Value;
                    if (value == -3000)
                    {
                        int      pROVIDERROLEALREADYEXISTS = ErrRes.PROVIDER_ROLE_ALREADY_EXISTS;
                        string[] strArrays = new string[] { roleName };
                        throw new ProviderException(MsgManager.GetMsg(pROVIDERROLEALREADYEXISTS, strArrays));
                    }
                    if (value == 0)
                    {
                        return;
                    }
                }
                catch
                {
                    throw;
                }
            }
            finally
            {
                if (oracleCommand != null)
                {
                    oracleCommand.Dispose();
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
コード例 #11
0
 /// <summary>
 /// Constructs the saga storage
 /// </summary>
 public OracleSqlSagaStorage(OracleConnectionHelper connectionHelper, string dataTableName,
                             string indexTableName, IRebusLoggerFactory rebusLoggerFactory)
 {
     if (rebusLoggerFactory == null)
     {
         throw new ArgumentNullException(nameof(rebusLoggerFactory));
     }
     _connectionHelper = connectionHelper ?? throw new ArgumentNullException(nameof(connectionHelper));
     _dataTableName    = dataTableName ?? throw new ArgumentNullException(nameof(dataTableName));
     _indexTableName   = indexTableName ?? throw new ArgumentNullException(nameof(indexTableName));
     _log = rebusLoggerFactory.GetLogger <OracleSqlSagaStorage>();
 }
コード例 #12
0
            public override void Initialize(string name, NameValueCollection config)
            {
                if (config == null)
                {
                    throw new ArgumentNullException(nameof(config));
                }
                if (string.IsNullOrEmpty(name))
                {
                    name = "Oracle.Web.SessionState.OracleSessionStateStoreProvider";
                }
                Util.HandleDescriptionAttribute(config, ErrRes.SESSIONSTATE_PROVIDER_DESCRIPTION);
                base.Initialize(name, config);
                this.m_CommandTimeout = Convert.ToInt32(Util.GetConfigValue(config["commandTimeout"], "30"));
                if (this.m_CommandTimeout < 0 || this.m_CommandTimeout > int.MaxValue)
                {
                    throw new ProviderException(MsgManager.GetMsg(ErrRes.PROVIDER_INVALID_COMMANDTIMEOUT_VALUE));
                }
                this.m_OracleConnectionString = Util.ReadConnectionString(config).Trim();
                config.Remove("connectionStringName");
                config.Remove("commandTimeout");
                Util.CheckForUnrecognizedAttribute(config);
                this.pApplicationName = HttpRuntime.AppDomainAppId;
                OracleConnectionHolder connectionHolder = (OracleConnectionHolder)null;
                OracleCommand          oracleCommand    = (OracleCommand)null;

                try
                {
                    connectionHolder = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    oracleCommand    = new OracleCommand("ora_aspnet_SessnApp_GetAppID", connectionHolder.Connection);
                    ((DbCommand)oracleCommand).CommandTimeout = this.m_CommandTimeout;
                    ((DbCommand)oracleCommand).CommandType    = CommandType.StoredProcedure;
                    oracleCommand.Parameters.Add(new OracleParameter("OutResult", (OracleDbType)112, ParameterDirection.ReturnValue));
                    ((DbParameter)oracleCommand.Parameters[0]).DbType = DbType.Int32;
                    oracleCommand.Parameters.Add(new OracleParameter("appName_", (OracleDbType)119, 280));
                    ((DbParameter)oracleCommand.Parameters[1]).Value = (object)this.pApplicationName;
                    oracleCommand.Parameters.Add(new OracleParameter("appId_", (OracleDbType)120, ParameterDirection.Output));
                    ((DbParameter)oracleCommand.Parameters[2]).Size   = 16;
                    ((DbParameter)oracleCommand.Parameters[2]).DbType = DbType.Binary;
                    ((DbCommand)oracleCommand).ExecuteNonQuery();
                    this.m_appID = new Guid((byte[])((DbParameter)oracleCommand.Parameters[2]).Value).ToString();
                }
                catch
                {
                    throw;
                }
                finally
                {
                    ((Component)oracleCommand)?.Dispose();
                    connectionHolder?.Close();
                }
            }
コード例 #13
0
        public ITransport Create(string inputQueueAddress)
        {
            var consoleLoggerFactory = new ConsoleLoggerFactory(false);
            var connectionHelper     = new OracleConnectionHelper(OracleTestHelper.ConnectionString);
            var asyncTaskFactory     = new TplAsyncTaskFactory(consoleLoggerFactory);
            var transport            = new OracleTransport(connectionHelper, _tableName, inputQueueAddress, consoleLoggerFactory, asyncTaskFactory, _fakeRebusTime);

            _disposables.Add(transport);

            transport.EnsureTableIsCreated();
            transport.Initialize();

            return(transport);
        }
コード例 #14
0
        protected override void SetUp()
        {
            var consoleLoggerFactory = new ConsoleLoggerFactory(false);
            var asyncTaskFactory     = new TplAsyncTaskFactory(consoleLoggerFactory);
            var connectionHelper     = new OracleConnectionHelper(OracleTestHelper.ConnectionString);

            _transport = new OracleTransport(connectionHelper, _tableName, QueueName, consoleLoggerFactory, asyncTaskFactory, new FakeRebusTime());
            _transport.EnsureTableIsCreated();

            Using(_transport);

            _transport.Initialize();
            _cancellationToken = new CancellationTokenSource().Token;
        }
コード例 #15
0
        public override bool RoleExists(string roleName)
        {
            bool flag;

            Util.CheckParameter(ref roleName, true, true, true, 256, "roleName");
            OracleConnectionHolder connection    = null;
            OracleCommand          oracleCommand = null;

            try
            {
                try
                {
                    connection    = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    oracleCommand = new OracleCommand("ora_aspnet_Roles_RoleExists", connection.Connection)
                    {
                        CommandTimeout = this.m_CommandTimeout,
                        CommandType    = CommandType.StoredProcedure
                    };
                    oracleCommand.Parameters.Add(new OracleParameter("OutResult", OracleDbType.Int32, ParameterDirection.ReturnValue));
                    oracleCommand.Parameters[0].DbType = DbType.Int32;
                    oracleCommand.Parameters.Add(new OracleParameter("ApplicationName_", OracleDbType.NVarchar2));
                    oracleCommand.Parameters[1].Value = this.m_ApplicationName;
                    oracleCommand.Parameters.Add(new OracleParameter("RoleName_", OracleDbType.NVarchar2));
                    oracleCommand.Parameters[2].Value = roleName;
                    oracleCommand.ExecuteNonQuery();
                    flag = ((int)oracleCommand.Parameters[0].Value != 0 ? false : true);
                }
                catch
                {
                    throw;
                }
            }
            finally
            {
                if (oracleCommand != null)
                {
                    oracleCommand.Dispose();
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
            return(flag);
        }
コード例 #16
0
        public ITransport Create(string inputQueueAddress)
        {
            var tableName = ("rebus_messages_" + TestConfig.Suffix).TrimEnd('_');

            _tablesToDrop.Add(tableName);

            var consoleLoggerFactory = new ConsoleLoggerFactory(false);
            var connectionHelper     = new OracleConnectionHelper(OracleTestHelper.ConnectionString);
            var asyncTaskFactory     = new TplAsyncTaskFactory(consoleLoggerFactory);
            var transport            = new OracleTransport(connectionHelper, tableName, inputQueueAddress, consoleLoggerFactory, asyncTaskFactory);

            _disposables.Add(transport);

            transport.EnsureTableIsCreated();
            transport.Initialize();

            return(transport);
        }
コード例 #17
0
        /// <summary>
        /// Configures Rebus to use Oracle to store subscriptions. Use <paramref name="isCentralized"/> = true to indicate whether it's OK to short-circuit
        /// subscribing and unsubscribing by manipulating the subscription directly from the subscriber or just let it default to false to preserve the
        /// default behavior.
        /// </summary>
        public static void StoreInOracle(this StandardConfigurer <ISubscriptionStorage> configurer,
                                         string connectionString, string tableName, bool isCentralized = false, bool automaticallyCreateTables = true, Action <OracleConnection> additionalConnectionSetup = null)
        {
            configurer.Register(c =>
            {
                var rebusLoggerFactory  = c.Get <IRebusLoggerFactory>();
                var connectionHelper    = new OracleConnectionHelper(connectionString, additionalConnectionSetup);
                var subscriptionStorage = new OracleSubscriptionStorage(
                    connectionHelper, tableName, isCentralized, rebusLoggerFactory);

                if (automaticallyCreateTables)
                {
                    subscriptionStorage.EnsureTableIsCreated();
                }

                return(subscriptionStorage);
            });
        }
コード例 #18
0
        static OracleTransport GetTransport()
        {
            var loggerFactory      = new ConsoleLoggerFactory(false);
            var connectionProvider = new OracleConnectionHelper(OracleTestHelper.ConnectionString);
            var asyncTaskFactory   = new TplAsyncTaskFactory(loggerFactory);

            var transport = new OracleTransport(
                connectionProvider,
                TableName,
                QueueName,
                loggerFactory,
                asyncTaskFactory
                );

            transport.EnsureTableIsCreated();
            transport.Initialize();

            return(transport);
        }
コード例 #19
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="connectionHelper"></param>
        /// <param name="tableName"></param>
        /// <param name="inputQueueName"></param>
        /// <param name="rebusLoggerFactory"></param>
        /// <param name="asyncTaskFactory"></param>
        public OracleTransport(OracleConnectionHelper connectionHelper, string tableName, string inputQueueName, IRebusLoggerFactory rebusLoggerFactory, IAsyncTaskFactory asyncTaskFactory)
        {
            if (rebusLoggerFactory == null)
            {
                throw new ArgumentNullException(nameof(rebusLoggerFactory));
            }
            if (asyncTaskFactory == null)
            {
                throw new ArgumentNullException(nameof(asyncTaskFactory));
            }

            _log = rebusLoggerFactory.GetLogger <OracleTransport>();
            _connectionHelper           = connectionHelper ?? throw new ArgumentNullException(nameof(connectionHelper));
            _tableName                  = tableName ?? throw new ArgumentNullException(nameof(tableName));
            _inputQueueName             = inputQueueName;
            _expiredMessagesCleanupTask = asyncTaskFactory.Create("ExpiredMessagesCleanup", PerformExpiredMessagesCleanupCycle, intervalSeconds: 60);

            ExpiredMessagesCleanupInterval = DefaultExpiredMessagesCleanupInterval;
        }
コード例 #20
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="connectionHelper"></param>
        /// <param name="options"></param>
        /// <param name="rebusLoggerFactory"></param>
        public OracleAQTransport(OracleConnectionHelper connectionHelper, OracleAQTransportOptions options, IRebusLoggerFactory rebusLoggerFactory)
        {
            if (rebusLoggerFactory == null)
            {
                throw new ArgumentNullException(nameof(rebusLoggerFactory));
            }

            _log = rebusLoggerFactory.GetLogger <OracleAQTransport>();
            _connectionHelper = connectionHelper ?? throw new ArgumentNullException(nameof(connectionHelper));

            _options = options ?? throw new ArgumentNullException(nameof(options));

            if (_options.DequeueOptions == null)
            {
                throw new ArgumentNullException(nameof(_options.DequeueOptions));
            }
            if (_options.EnqueueOptions == null)
            {
                throw new ArgumentNullException(nameof(_options.EnqueueOptions));
            }
        }
コード例 #21
0
 /// <summary>
 /// Creats connection.
 /// </summary>
 ///
 /// <returns></returns>
 public static IDbConnection CreateConnection()
 {
     return(OracleConnectionHelper.GetPooledConnection(DbUserName, DataSource));
 }
コード例 #22
0
        public override void RemoveUsersFromRoles(string[] userNames, string[] roleNames)
        {
            Util.CheckArrayParameter(ref roleNames, true, true, true, 256, "roleNames");
            Util.CheckArrayParameter(ref userNames, true, true, true, 256, "userNames");
            string empty = string.Empty;
            string str   = string.Empty;
            OracleConnectionHolder connection    = null;
            OracleCommand          oracleCommand = null;

            try
            {
                try
                {
                    connection    = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    oracleCommand = new OracleCommand("ora_aspnet_UIR_RemUsersFmRoles", connection.Connection)
                    {
                        CommandTimeout = this.m_CommandTimeout,
                        CommandType    = CommandType.StoredProcedure
                    };
                    OracleParameter oracleParameter = oracleCommand.Parameters.Add("OutResult", OracleDbType.Int32, ParameterDirection.ReturnValue);
                    oracleParameter.DbType = DbType.Int32;
                    OracleParameter mApplicationName = oracleCommand.Parameters.Add("ApplicationName_", OracleDbType.NVarchar2);
                    mApplicationName.Value = this.m_ApplicationName;
                    OracleParameter length = oracleCommand.Parameters.Add("UserNames_", OracleDbType.NVarchar2);
                    length.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
                    length.Size           = (int)userNames.Length;
                    length.Value          = userNames;
                    OracleParameter length1 = oracleCommand.Parameters.Add("UserNames_Arr_Size", OracleDbType.Int32);
                    length1.Value = (int)userNames.Length;
                    OracleParameter oracleParameter1 = oracleCommand.Parameters.Add("RoleNames_", OracleDbType.NVarchar2);
                    oracleParameter1.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
                    oracleParameter1.Size           = (int)roleNames.Length;
                    oracleParameter1.Value          = roleNames;
                    OracleParameter length2 = oracleCommand.Parameters.Add("RoleNames_Arr_Size", OracleDbType.Int32);
                    length2.Value = (int)roleNames.Length;
                    OracleParameter oracleParameter2 = oracleCommand.Parameters.Add("UserName", OracleDbType.NVarchar2, OracleRoleProvider.MAX_NAME_SIZE);
                    oracleParameter2.Direction = ParameterDirection.Output;
                    OracleParameter oracleParameter3 = oracleCommand.Parameters.Add("RoleName", OracleDbType.NVarchar2, OracleRoleProvider.MAX_NAME_SIZE);
                    oracleParameter3.Direction = ParameterDirection.Output;
                    oracleCommand.ExecuteNonQuery();
                    int value = (int)oracleCommand.Parameters[0].Value;
                    if (oracleCommand.Parameters[6].Value.ToString() != "null")
                    {
                        str = oracleCommand.Parameters[6].Value.ToString();
                    }
                    if (oracleCommand.Parameters[7].Value.ToString() != "null")
                    {
                        empty = oracleCommand.Parameters[7].Value.ToString();
                    }
                    int num = value;
                    switch (num)
                    {
                    case -3004:
                    {
                        int      pROVIDERTHISUSERNOTFOUND = ErrRes.PROVIDER_THIS_USER_NOT_FOUND;
                        string[] strArrays = new string[] { str };
                        throw new ProviderException(MsgManager.GetMsg(pROVIDERTHISUSERNOTFOUND, strArrays));
                    }

                    case -3003:
                    {
                        int      pROVIDERTHISUSERALREADYNOTINROLE = ErrRes.PROVIDER_THIS_USER_ALREADY_NOT_IN_ROLE;
                        string[] strArrays1 = new string[] { str, empty };
                        throw new ProviderException(MsgManager.GetMsg(pROVIDERTHISUSERALREADYNOTINROLE, strArrays1));
                    }

                    case -3002:
                    {
                        break;
                    }

                    case -3001:
                    {
                        int      pROVIDERROLENOTFOUND = ErrRes.PROVIDER_ROLE_NOT_FOUND;
                        string[] strArrays2           = new string[] { empty };
                        throw new ProviderException(MsgManager.GetMsg(pROVIDERROLENOTFOUND, strArrays2));
                    }

                    default:
                    {
                        if (num != 0)
                        {
                            goto case -3002;
                        }
                        return;
                    }
                    }
                }
                catch
                {
                    throw;
                }
            }
            finally
            {
                if (oracleCommand != null)
                {
                    oracleCommand.Dispose();
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
        }
コード例 #23
0
        public override bool IsUserInRole(string userName, string roleName)
        {
            bool flag;

            Util.CheckParameter(ref roleName, true, true, true, 256, "roleName");
            Util.CheckParameter(ref userName, true, false, true, 256, "userName");
            if (userName.Length < 1)
            {
                return(false);
            }
            OracleConnectionHolder connection    = null;
            OracleCommand          oracleCommand = null;

            try
            {
                try
                {
                    connection    = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    oracleCommand = new OracleCommand("ora_aspnet_UIR_IsUserInRole", connection.Connection)
                    {
                        CommandTimeout = this.m_CommandTimeout,
                        CommandType    = CommandType.StoredProcedure
                    };
                    oracleCommand.Parameters.Add(new OracleParameter("OutResult", OracleDbType.Int32, ParameterDirection.ReturnValue));
                    oracleCommand.Parameters[0].DbType = DbType.Int32;
                    oracleCommand.Parameters.Add(new OracleParameter("ApplicationName_", OracleDbType.NVarchar2));
                    oracleCommand.Parameters[1].Value = this.m_ApplicationName;
                    oracleCommand.Parameters.Add(new OracleParameter("UserName_", OracleDbType.NVarchar2));
                    oracleCommand.Parameters[2].Value = userName;
                    oracleCommand.Parameters.Add(new OracleParameter("RoleName_", OracleDbType.NVarchar2));
                    oracleCommand.Parameters[3].Value = roleName;
                    oracleCommand.ExecuteNonQuery();
                    switch ((int)oracleCommand.Parameters[0].Value)
                    {
                    case 0:
                    {
                        flag = true;
                        return(flag);
                    }

                    case 1:
                    {
                        flag = false;
                        return(flag);
                    }

                    case 2:
                    {
                        flag = false;
                        return(flag);
                    }

                    case 3:
                    {
                        flag = false;
                        return(flag);
                    }
                    }
                    flag = false;
                }
                catch
                {
                    throw;
                }
            }
            finally
            {
                if (oracleCommand != null)
                {
                    oracleCommand.Dispose();
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
            return(flag);
        }
コード例 #24
0
        public override string[] GetUsersInRole(string roleName)
        {
            string[] strArrays;
            Util.CheckParameter(ref roleName, true, true, true, 256, "roleName");
            OracleConnectionHolder connection       = null;
            OracleCommand          oracleCommand    = null;
            OracleDataReader       oracleDataReader = null;

            try
            {
                try
                {
                    StringCollection stringCollections = new StringCollection();
                    connection    = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    oracleCommand = new OracleCommand("ora_aspnet_UIR_GetUsersInRoles", connection.Connection)
                    {
                        CommandTimeout = this.m_CommandTimeout,
                        CommandType    = CommandType.StoredProcedure
                    };
                    OracleParameter oracleParameter = oracleCommand.Parameters.Add("OutResult", OracleDbType.Int32, ParameterDirection.ReturnValue);
                    oracleParameter.DbType = DbType.Int32;
                    OracleParameter mApplicationName = oracleCommand.Parameters.Add("ApplicationName_", OracleDbType.NVarchar2);
                    mApplicationName.Value = this.m_ApplicationName;
                    oracleCommand.Parameters.Add("RoleName_", OracleDbType.NVarchar2).Value      = roleName;
                    oracleCommand.Parameters.Add("UserCursor", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
                    oracleDataReader = oracleCommand.ExecuteReader();
                    int value = (int)oracleCommand.Parameters[0].Value;
                    while (oracleDataReader.Read())
                    {
                        stringCollections.Add(oracleDataReader.GetString(0));
                    }
                    if (stringCollections.Count >= 1)
                    {
                        string[] strArrays1 = new string[stringCollections.Count];
                        stringCollections.CopyTo(strArrays1, 0);
                        strArrays = strArrays1;
                    }
                    else
                    {
                        int num = value;
                        if (num == -3001)
                        {
                            int      pROVIDERROLENOTFOUND = ErrRes.PROVIDER_ROLE_NOT_FOUND;
                            string[] strArrays2           = new string[] { roleName };
                            throw new ProviderException(MsgManager.GetMsg(pROVIDERROLENOTFOUND, strArrays2));
                        }
                        strArrays = (num != 0 ? new string[0] : new string[0]);
                    }
                }
                catch
                {
                    throw;
                }
            }
            finally
            {
                if (oracleDataReader != null)
                {
                    oracleDataReader.Dispose();
                }
                if (oracleCommand != null)
                {
                    oracleCommand.Dispose();
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
            return(strArrays);
        }
コード例 #25
0
        public override string[] GetRolesForUser(string userName)
        {
            string[] strArrays;
            Util.CheckParameter(ref userName, true, false, true, 256, "userName");
            if (userName.Length < 1)
            {
                return(new string[0]);
            }
            OracleConnectionHolder connection       = null;
            OracleCommand          oracleCommand    = null;
            OracleDataReader       oracleDataReader = null;

            try
            {
                try
                {
                    StringCollection stringCollections = new StringCollection();
                    connection    = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    oracleCommand = new OracleCommand("ora_aspnet_UIR_GetRolesForUser", connection.Connection)
                    {
                        CommandTimeout = this.m_CommandTimeout,
                        CommandType    = CommandType.StoredProcedure
                    };
                    OracleParameter oracleParameter = oracleCommand.Parameters.Add("OutResult", OracleDbType.Int32, ParameterDirection.ReturnValue);
                    oracleParameter.DbType = DbType.Int32;
                    OracleParameter mApplicationName = oracleCommand.Parameters.Add("ApplicationName_", OracleDbType.NVarchar2);
                    mApplicationName.Value = this.m_ApplicationName;
                    oracleCommand.Parameters.Add("UserName_", OracleDbType.NVarchar2).Value      = userName;
                    oracleCommand.Parameters.Add("RoleCursor", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
                    oracleDataReader = oracleCommand.ExecuteReader();
                    int value = (int)oracleCommand.Parameters[0].Value;
                    while (oracleDataReader.Read())
                    {
                        stringCollections.Add(oracleDataReader.GetString(0));
                    }
                    if (stringCollections.Count >= 1)
                    {
                        string[] strArrays1 = new string[stringCollections.Count];
                        stringCollections.CopyTo(strArrays1, 0);
                        strArrays = strArrays1;
                    }
                    else
                    {
                        strArrays = new string[0];
                    }
                }
                catch
                {
                    throw;
                }
            }
            finally
            {
                if (oracleDataReader != null)
                {
                    oracleDataReader.Dispose();
                }
                if (oracleCommand != null)
                {
                    oracleCommand.Dispose();
                }
                if (connection != null)
                {
                    connection.Close();
                    connection = null;
                }
            }
            return(strArrays);
        }
コード例 #26
0
 /// <summary>
 /// Constructs the storage
 /// </summary>
 public OracleSagaSnapshotStorage(OracleConnectionHelper connectionHelper, string tableName)
 {
     _connectionHelper = connectionHelper ?? throw new ArgumentNullException(nameof(connectionHelper));
     _tableName        = tableName ?? throw new ArgumentNullException(nameof(tableName));
 }
コード例 #27
0
 public OracleAQSchemaInitializer(IRebusLoggerFactory loggerFactory, OracleConnectionHelper connectionHelper)
 {
     _log = loggerFactory.GetLogger <OracleAQSchemaInitializer>();
     _connectionHelper = connectionHelper;
 }
コード例 #28
0
            private SessionStateStoreData GetSessionStoreItem(
                HttpContext context,
                string id,
                bool getExclusive,
                out bool locked,
                out TimeSpan lockAge,
                out object lockId,
                out SessionStateActions actionFlags)
            {
                MemoryStream           memoryStream     = (MemoryStream)null;
                OracleConnectionHolder connectionHolder = (OracleConnectionHolder)null;
                OracleCommand          oracleCommand    = (OracleCommand)null;

                locked      = false;
                lockId      = (object)null;
                lockAge     = TimeSpan.Zero;
                actionFlags = SessionStateActions.None;
                try
                {
                    connectionHolder = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    oracleCommand    = !getExclusive ? new OracleCommand("ora_aspnet_Sessn_GetStateItem", connectionHolder.Connection) : new OracleCommand("ora_aspnet_Sessn_GetStateItmEx", connectionHolder.Connection);
                    ((DbCommand)oracleCommand).CommandTimeout = this.m_CommandTimeout;
                    ((DbCommand)oracleCommand).CommandType    = CommandType.StoredProcedure;
                    ((DbParameter)oracleCommand.Parameters.Add("OutResult", (OracleDbType)112, ParameterDirection.ReturnValue)).DbType  = DbType.Int32;
                    ((DbParameter)oracleCommand.Parameters.Add(nameof(id), (OracleDbType)119, OracleSessionStateStore.ID_LENGTH)).Value = (object)(id + this.m_appID);
                    OracleParameter oracleParameter = oracleCommand.Parameters.Add("itemShort", (OracleDbType)120, ParameterDirection.Output);
                    ((DbParameter)oracleParameter).Size   = 2000;
                    ((DbParameter)oracleParameter).DbType = DbType.Binary;
                    ((DbParameter)oracleCommand.Parameters.Add(nameof(locked), (OracleDbType)112, ParameterDirection.Output)).DbType      = DbType.Int32;
                    ((DbParameter)oracleCommand.Parameters.Add(nameof(lockAge), (OracleDbType)112, ParameterDirection.Output)).DbType     = DbType.Int32;
                    ((DbParameter)oracleCommand.Parameters.Add("lockCookie", (OracleDbType)112, ParameterDirection.Output)).DbType        = DbType.Int32;
                    ((DbParameter)oracleCommand.Parameters.Add(nameof(actionFlags), (OracleDbType)112, ParameterDirection.Output)).DbType = DbType.Int32;
                    oracleCommand.Parameters.Add("itemLong", (OracleDbType)102, ParameterDirection.Output);
                    ((DbCommand)oracleCommand).ExecuteNonQuery();
                    if (Convert.IsDBNull(((DbParameter)oracleCommand.Parameters[3]).Value))
                    {
                        return((SessionStateStoreData)null);
                    }
                    locked      = (int)((DbParameter)oracleCommand.Parameters[3]).Value != 0;
                    lockId      = (object)(int)((DbParameter)oracleCommand.Parameters[5]).Value;
                    actionFlags = (SessionStateActions)((DbParameter)oracleCommand.Parameters[6]).Value;
                    if (locked)
                    {
                        lockAge = new TimeSpan(0, 0, (int)((DbParameter)oracleCommand.Parameters[4]).Value);
                        if (lockAge > new TimeSpan(0, 0, 30758400))
                        {
                            lockAge = TimeSpan.Zero;
                        }
                        return((SessionStateStoreData)null);
                    }
                    byte[] buffer = !Convert.IsDBNull(((DbParameter)oracleCommand.Parameters[2]).Value) ? (byte[])((DbParameter)oracleCommand.Parameters[2]).Value : ((OracleBlob)((DbParameter)oracleCommand.Parameters[7]).Value).Value;
                    SessionStateStoreData sessionStateStoreData;
                    try
                    {
                        memoryStream          = new MemoryStream(buffer);
                        sessionStateStoreData = OracleSessionStateStore.Deserialize(context, (Stream)memoryStream);
                    }
                    finally
                    {
                        memoryStream?.Close();
                    }
                    return(sessionStateStoreData);
                }
                catch
                {
                    throw;
                }
                finally
                {
                    ((Component)oracleCommand)?.Dispose();
                    connectionHolder?.Close();
                }
            }
コード例 #29
0
            public override void RemoveItem(
                HttpContext context,
                string id,
                object lockId,
                SessionStateStoreData item)
            {
                int           num           = (int)lockId;
                OracleCommand oracleCommand = (OracleCommand)null;

                try
                {
                    oracleCommand = new OracleCommand("ora_aspnet_Sessn_RmStateItem", OracleConnectionHelper.GetConnection(this.m_OracleConnectionString).Connection);
                    ((DbCommand)oracleCommand).CommandTimeout = this.m_CommandTimeout;
                    ((DbCommand)oracleCommand).CommandType    = CommandType.StoredProcedure;
                    oracleCommand.Parameters.Add(new OracleParameter("OutResult", (OracleDbType)112, ParameterDirection.ReturnValue));
                    ((DbParameter)oracleCommand.Parameters[0]).DbType = DbType.Int32;
                    oracleCommand.Parameters.Add(new OracleParameter(nameof(id), (OracleDbType)119, OracleSessionStateStore.ID_LENGTH));
                    ((DbParameter)oracleCommand.Parameters[1]).Value = (object)(id + this.m_appID);
                    oracleCommand.Parameters.Add(new OracleParameter("lockCookie", (OracleDbType)112));
                    ((DbParameter)oracleCommand.Parameters[2]).Value = (object)num;
                    ((DbCommand)oracleCommand).ExecuteNonQuery();
                }
                catch
                {
                    throw;
                }
                finally
                {
                    ((Component)oracleCommand)?.Dispose();
                }
            }
コード例 #30
0
            public override void SetAndReleaseItemExclusive(
                HttpContext context,
                string id,
                SessionStateStoreData item,
                object lockId,
                bool newItem)
            {
                OracleConnectionHolder connectionHolder = (OracleConnectionHolder)null;
                OracleCommand          oracleCommand    = (OracleCommand)null;

                try
                {
                    connectionHolder = OracleConnectionHelper.GetConnection(this.m_OracleConnectionString);
                    byte[] buffer;
                    int    length;
                    try
                    {
                        OracleSessionStateStore.SerializeSessionStateStoreData(item, 2000, out buffer, out length);
                    }
                    catch
                    {
                        if (!newItem)
                        {
                            this.ReleaseItemExclusive(context, id, lockId);
                        }
                        throw;
                    }
                    int num = lockId != null ? (int)lockId : 0;
                    if (!newItem)
                    {
                        if (length <= 2000)
                        {
                            oracleCommand = new OracleCommand(OracleSessionStateStore.ora_aspnet_Sessn_UpdStateItem_CommandText, connectionHolder.Connection);
                            ((DbCommand)oracleCommand).CommandTimeout = this.m_CommandTimeout;
                            ((DbCommand)oracleCommand).CommandType    = CommandType.Text;
                            oracleCommand.BindByName = true;
                            oracleCommand.Parameters.Add(new OracleParameter("itemShort", (OracleDbType)120, 2000));
                            ((DbParameter)oracleCommand.Parameters[0]).Size  = length;
                            ((DbParameter)oracleCommand.Parameters[0]).Value = (object)buffer;
                            oracleCommand.Parameters.Add(new OracleParameter("itemLong", (OracleDbType)110));
                            ((DbParameter)oracleCommand.Parameters[1]).Value = (object)DBNull.Value;
                            oracleCommand.Parameters.Add(new OracleParameter("timeout", (OracleDbType)112));
                            ((DbParameter)oracleCommand.Parameters[2]).Value = (object)item.Timeout;
                            oracleCommand.Parameters.Add(new OracleParameter(nameof(id), (OracleDbType)119, OracleSessionStateStore.ID_LENGTH));
                            ((DbParameter)oracleCommand.Parameters[3]).Value = (object)(id + this.m_appID);
                            oracleCommand.Parameters.Add(new OracleParameter("lockCookie", (OracleDbType)112));
                            ((DbParameter)oracleCommand.Parameters[4]).Value = (object)num;
                            ((DbCommand)oracleCommand).ExecuteNonQuery();
                        }
                        else
                        {
                            oracleCommand = new OracleCommand(OracleSessionStateStore.ora_aspnet_Sessn_UpdStateItem_CommandText, connectionHolder.Connection);
                            ((DbCommand)oracleCommand).CommandTimeout = this.m_CommandTimeout;
                            ((DbCommand)oracleCommand).CommandType    = CommandType.Text;
                            oracleCommand.BindByName = true;
                            oracleCommand.Parameters.Add(new OracleParameter("itemShort", (OracleDbType)120, 2000));
                            ((DbParameter)oracleCommand.Parameters[0]).Value = (object)DBNull.Value;
                            if (length <= int.MaxValue)
                            {
                                oracleCommand.Parameters.Add(new OracleParameter("itemLong", (OracleDbType)110));
                                ((DbParameter)oracleCommand.Parameters[1]).Size  = length;
                                ((DbParameter)oracleCommand.Parameters[1]).Value = (object)buffer;
                            }
                            else
                            {
                                oracleCommand.Parameters.Add(new OracleParameter("itemLong", (OracleDbType)102));
                                OracleBlob oracleBlob = new OracleBlob(oracleCommand.Connection, true);
                                ((Stream)oracleBlob).Write(buffer, 0, length);
                                ((DbParameter)oracleCommand.Parameters[1]).Value = (object)oracleBlob;
                            }
                            oracleCommand.Parameters.Add(new OracleParameter("timeout", (OracleDbType)112));
                            ((DbParameter)oracleCommand.Parameters[2]).Value = (object)item.Timeout;
                            oracleCommand.Parameters.Add(new OracleParameter(nameof(id), (OracleDbType)119, OracleSessionStateStore.ID_LENGTH));
                            ((DbParameter)oracleCommand.Parameters[3]).Value = (object)(id + this.m_appID);
                            oracleCommand.Parameters.Add(new OracleParameter("lockCookie", (OracleDbType)112));
                            ((DbParameter)oracleCommand.Parameters[4]).Value = (object)num;
                            ((DbCommand)oracleCommand).ExecuteNonQuery();
                        }
                    }
                    else if (length <= 2000)
                    {
                        oracleCommand = new OracleCommand(OracleSessionStateStore.ora_aspnet_Sessn_InsStateItem_CommandText, connectionHolder.Connection);
                        ((DbCommand)oracleCommand).CommandTimeout = this.m_CommandTimeout;
                        ((DbCommand)oracleCommand).CommandType    = CommandType.Text;
                        oracleCommand.BindByName = true;
                        oracleCommand.Parameters.Add(new OracleParameter(nameof(id), (OracleDbType)119, OracleSessionStateStore.ID_LENGTH));
                        ((DbParameter)oracleCommand.Parameters[0]).Value = (object)(id + this.m_appID);
                        oracleCommand.Parameters.Add(new OracleParameter("itemShort", (OracleDbType)120, 2000));
                        ((DbParameter)oracleCommand.Parameters[1]).Size  = length;
                        ((DbParameter)oracleCommand.Parameters[1]).Value = (object)buffer;
                        oracleCommand.Parameters.Add(new OracleParameter("itemLong", (OracleDbType)102));
                        ((DbParameter)oracleCommand.Parameters[2]).Value = (object)DBNull.Value;
                        oracleCommand.Parameters.Add(new OracleParameter("timeout", (OracleDbType)112));
                        ((DbParameter)oracleCommand.Parameters[3]).Value = (object)item.Timeout;
                        ((DbCommand)oracleCommand).ExecuteNonQuery();
                    }
                    else
                    {
                        oracleCommand = new OracleCommand(OracleSessionStateStore.ora_aspnet_Sessn_InsStateItem_CommandText, connectionHolder.Connection);
                        ((DbCommand)oracleCommand).CommandTimeout = this.m_CommandTimeout;
                        ((DbCommand)oracleCommand).CommandType    = CommandType.Text;
                        oracleCommand.BindByName = true;
                        oracleCommand.Parameters.Add(new OracleParameter(nameof(id), (OracleDbType)119, OracleSessionStateStore.ID_LENGTH));
                        ((DbParameter)oracleCommand.Parameters[0]).Value = (object)(id + this.m_appID);
                        oracleCommand.Parameters.Add(new OracleParameter("itemShort", (OracleDbType)120, 2000));
                        ((DbParameter)oracleCommand.Parameters[1]).Value = (object)DBNull.Value;
                        if (length <= int.MaxValue)
                        {
                            oracleCommand.Parameters.Add(new OracleParameter("itemLong", (OracleDbType)110));
                            ((DbParameter)oracleCommand.Parameters[2]).Size  = length;
                            ((DbParameter)oracleCommand.Parameters[2]).Value = (object)buffer;
                        }
                        else
                        {
                            oracleCommand.Parameters.Add(new OracleParameter("itemLong", (OracleDbType)102));
                            OracleBlob oracleBlob = new OracleBlob(oracleCommand.Connection, true);
                            ((Stream)oracleBlob).Write(buffer, 0, length);
                            ((DbParameter)oracleCommand.Parameters[2]).Value = (object)oracleBlob;
                        }
                        oracleCommand.Parameters.Add(new OracleParameter("timeout", (OracleDbType)112));
                        ((DbParameter)oracleCommand.Parameters[3]).Value = (object)item.Timeout;
                        ((DbCommand)oracleCommand).ExecuteNonQuery();
                    }
                }
                catch (OracleException ex)
                {
                    if (newItem && ex.Number == 1)
                    {
                        return;
                    }
                    throw;
                }
                catch
                {
                    throw;
                }
                finally
                {
                    ((Component)oracleCommand)?.Dispose();
                    connectionHolder?.Close();
                }
            }