2015-10-05 6 views
1

Я использую SqlDependency в коде C# для оповещения о моем приложении при изменении значения конкретного столбца в строке в базе данных. Я мог бы достичь этого, используя встроенный SQL.SQL-зависимость с использованием хранимой процедуры

Я бы хотел заменить его хранимой процедурой, но по какой-то причине код не выполняет хранимую процедуру. Я вставляю несколько строк кода из своего приложения. Пожалуйста, дайте мне знать, как изменить его, чтобы я мог заменить встроенный SQL на вызов процедуры для достижения того же.

var con = new SqlConnection(ConnectionString); 
SqlDependency.Stop(con.ConnectionString); 
SqlDependency.Start(con.ConnectionString); 

var connection = new SqlConnection(con.ConnectionString); 
connection.Open(); 

try 
{ 
    using (var command = new SqlCommand("inlinesql", connection)) 
    { 
     var dependency = new SqlDependency(command); 
     dependency.OnChange += new OnChangeEventHandler(OnDependencyChange); 

     using (SqlDataReader rdr = command.ExecuteReader()) 
     { 
      try 
      { 
       if (rdr.HasRows) 
       { 
        _autoEvent.WaitOne(); 
       } 
       else 
       { 
        continue; 
       } 
      } 
      finally 
      { 
       rdr.Close(); 
      } 
     } 
    } 
} 
finally 
{ 
    connection.Close(); 
    SqlDependency.Stop(con.ConnectionString); 
} 

void OnDependencyChange(object sender, SqlNotificationEventArgs e) 
{ 
    dosomething(); 
} 
+0

Помогло ли ниже ответ? Если да, отметьте в качестве ответа. Благодаря! – ragerory

ответ

1

Над var dependency... положить:

command.CommandType = CommandType.StoredProcedure; 

И заменить inlinesql с именем хранимой процедуры.

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