Там также механизм ADO.NET SqlDependency, если вы используете на стороне клиента ADO.NET с C# или VB.NET
Объект SqlDependency может быть связано с SqlCommand в заказать , чтобы обнаружить, когда результаты запроса отличаются от от первоначально полученных. Вы также можете назначить делегата событию OnChange , которое сработает, когда изменит результаты для связанной команды . Вы должны связать SqlDependency с командой до , которую вы выполняете. Свойство HasChanges для SqlDependency также может использоваться для . Определите, были ли получены результаты запроса с момента их первоначального ввода .
Вы в основном связать SqlDependency
с вашим SqlCommand и предоставить обработчик событий, который вызывается, когда значения, составляющие результирующего набора этих изменений SqlDependency.
using(SqlCommand cmd = new SqlCommand(queryStatement, _conn))
{
cmd.Notification = null;
SqlDependency dependency = new SqlDependency(cmd);
dependency.OnChange +=
new OnChangeEventHandler(OnChange);
......
}
В этом случае вы можете делать то, что вам нужно.
void OnChange(object sender, SqlNotificationEventArgs e)
{
SqlDependency dependency = sender as SqlDependency;
(do whatever you need to do - e.g. reload the data)
}
Marc
Это отличное решение и очень хорошо может быть лучшим в вашей ситуации, однако я уверен, что «Сервер» (SQL-сервер) не «нажимает» что-нибудь ... Мне любопытно, однако, что * * происходит под обложками? –
@Mike: сервер ** - ** нажимающий. См. Здесь: http://rusanu.com/2006/06/17/the-mysterious-notification/ –
@Marc: на самом деле уведомления о запросах доступны также клиентам ODBC и OleDB: http://msdn.microsoft.com/ru -us/library/ms130764.aspx –