Oracle # зависимость: событие не запускается - PullRequest
0 голосов
/ 23 октября 2018

Уважаемые все,

Я пытаюсь использовать OracleDependecy для уведомления об обновлении.

Внутри системной таблицы USER_CHANGE_NOTIFICATION_REGS я вижу зарегистрированное действие (с моим IpAddress и портом)

Я использую пакет Nuget Oracle.ManagedDataAccess (v. 4.122.18.3) внутри проекта консольного приложения (стандарт .Net)

Моя версия Oracle такова: Oracle Database 11g Enterprise Edition, выпуск 11.2.0.3.0 - 64-разрядная рабочая версия PL / SQL, выпуск 11.2.0.3.0 - производственная

Однако это не работает, событие dependency_OnChange не срабатывает, когда обновление сделано.Кто-нибудь знает почему?Где я могу найти пример работающего проекта?

Заранее спасибо

Здесь ниже вы можете найти код:

using (OracleConnection oraConnection = new OracleConnection(oraConnectionString))
        {
            try
            {
                // Open the connection
                oraConnection.Open();

                // Create the Select command retrieving single row from table. 
                OracleCommand selectCommand = new OracleCommand(oraQuery, oraConnection);

                // Create an OracleDependency object and set it to track the result set returned by selectCommand. 
                oraDependency = new OracleDependency(selectCommand);

                //Port
                OracleDependency.Port = 3048;

                // Setting object-based change notification registration 
                oraDependency.QueryBasedNotification = false;

                // When the IsNotifiedOnce property is true, only the first change  
                // of the traced result set will generate a notification. 
                // Otherwise, notifications will be sent on each change  
                // during the selectCommand.Notification.Timeout period. 
                selectCommand.Notification.IsNotifiedOnce = false;

                // Set the event handler to the OnChange event. 
                oraDependency.OnChange += new OnChangeEventHandler(dependency_OnChange);

                // When the select command is executed at the first time, a notification  
                // on changes of the corresponding result set is registered on the server.
                //selectCommand.CommandTimeout = 5;
                OracleDataReader reader = selectCommand.ExecuteReader(CommandBehavior.Default);

                // Pause the current thread to process the event. 
                Console.WriteLine("Ok");
                Console.Read();
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception encountered: {0}", e.Message);
            }
            // Always try to both remove the notification registration
            // oraConnection.Close() is autimatically called by .Dispose at the end of our 'using' statement
            finally
            {
                try
                {
                    oraDependency.RemoveRegistration(oraConnection);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception encountered: {0}", e.Message);
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...