2015-10-24 2 views
0

Вот пример из https://msdn.microsoft.com/en-us/library/62xk7953%28v=vs.110%29.aspxSql Dependency не срабатывает

void Initialization() 
{ 
    // Create a dependency connection. 
    SqlDependency.Start(connectionString, queueName); 
} 

void SomeMethod() 
{ 
    // Assume connection is an open SqlConnection. 

    // Create a new SqlCommand object. 
    using (SqlCommand command=new SqlCommand(
     "SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers", 
     connection)) 
    { 

     // Create a dependency and associate it with the SqlCommand. 
     SqlDependency dependency=new SqlDependency(command); 
     // Maintain the refence in a class member. 

     // Subscribe to the SqlDependency event. 
     dependency.OnChange+=new 
      OnChangeEventHandler(OnDependencyChange); 

     // Execute the command. 
     using (SqlDataReader reader = command.ExecuteReader()) 
     { 
      // Process the DataReader. 
     } 
    } 
} 

// Handler method 
void OnDependencyChange(object sender, 
    SqlNotificationEventArgs e) 
{ 
    // Handle the event (for example, invalidate this cache entry). 
} 

void Termination() 
{ 
    // Release the dependency. 
    SqlDependency.Stop(connectionString, queueName); 
} 

Как бы я использовать этот код для установки SqlDependency в моей консоли.

Я попытался ввести метод старта Initialization' method, but it does not fire SomeMethod`.

Также - если это возможно - я хочу передать некоторые аргументы моим SqlNotificationEventArgs, таким как строки.

ответ

0

Метод Initialization открывает соединение с сервером базы данных. Метод Start фактически регистрирует зависимость с использованием command. Ваша программа должна будет позвонить обоим.

OnDependencyChange будет запущен при изменении результата запроса вышеупомянутой команды.

Если вы посмотрите на справочную страницу для SqlNotificationEventArgs, она не сообщит вам, какие строки изменились - вам придется запросить базу данных самостоятельно, чтобы определить ее.

Смежные вопросы