2016-09-30 20 views
0

Ich arbeite an Projekt, wo ich Monitor auf einer unserer Datenbanktabelle halten muss, und für jede neue Datensatz einfügen muss ich das gleiche auf Client aktualisieren.SqlDependency Änderung funktioniert nur für eine Änderung

Dafür verwende ich SqlDependency, um den Service Broker zu abonnieren. Außerdem wird SignalR verwendet, um die Client-Seite sofort zu aktualisieren.

Meine Frage ist: mein Abonnement ist gültig für nur eine Änderung, sobald ich ein Update bekomme, weiß nicht wie, mein Abonnement wird automatisch entfernt.

Hier ist der Code, die für Änderungen an der Datenbank abonnieren:

SqlDependency.Start(connectionString); 
SubScribeForAttendance(); 
SqlDependency.Stop(connectionString); 

Abonnement-Funktion:

public void SubScribeForAttendance() 
{ 
    // We have selected the entire table as the command, so SQL Server executes this script and sees if there is a change in the result, raise the event 
    string commandText = @"Select bnr,knrhex From dbo.TableName where bnr > SomeId"; 

    // Start the SQL Dependency 
    SqlDependency.Start(connectionString); 

    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     using (SqlCommand command = new SqlCommand(commandText, connection)) 
     { 
      connection.Open(); 
      var sqlDependency = new SqlDependency(command); 
      sqlDependency.OnChange += Dependency_OnBookingChange; 

      // NOTE: You have to execute the command, or the notification will never fire. 
      using (command.ExecuteReader()) 
      { 
      } 
     } 
    } 
} 

Antwort

2

Sie SQL Abhängigkeit jedes Mal eine Benachrichtigung ausgelöst wird, SQL Dependency registrieren nur wieder müssen registriert sich für eine Benachrichtigung.

Anruf SubScribeForAttendance() am letzten Dependency_OnBookingChange neu registrieren gefunden SQL Dependency

ich diese Lösung aus diesem link

+0

So Re abonnieren ist die einzige Option? Können wir uns nicht für mehrere Änderungen registrieren? –

+0

Nein, SQL-Server registriert nur für eine Änderung, sobald ausgelöst, gibt es den Haken frei. –

+1

Kannst du mir bitte meine Antwort als akzeptiert geben, wenn dadurch dein Problem gelöst wurde? Vielen Dank –

Verwandte Themen