我正在使用sqlServer 2005上的sqlDependency。问题是:
- 如何有效地重新初始化sqlDependency以便它可以多次触发?
这是我的reregistring sqlDependency通知的实现:
SqlCommand command = new SqlCommand(sqlCommandString, openedConnection);
SqlDependency sqlDependency = new SqlDependency(Command);
sqlDependency.OnChange += this.OnChangeHandler;
command.ExecuteNonQueryAsync();
- 但是这种方法的问题在于,如果我同时在数据库中运行多个插入操作,那么onChange Handler只运行一次。为什么会这样?
Edit1:同时说我的意思是一个接一个地运行sql命令,这样它们之间的延迟非常小。
例如:
INSERT...;
INSERT...;
INSERT...;
在这些命令之后我只收到一个通知,而如果我逐个运行所有这些命令,我会收到所有3个通知
这是我称之为OnChangeHndler的函数:
public void RegisterSqlDependency(string sqlCommandString, EventHandler eventHandler)
{
SqlCommand command = new SqlCommand(sqlCommandString, this.connection);
SqlDependency sqlDependency = new SqlDependency(command);
sqlDependency.OnChange += this.OnChangeHandler;
command.ExecuteNonQueryAsync();
}
这里描述了实现SQL依赖关系的有效方法,请查看 -
http://www.codeproject.com/Articles/12335/Using-SqlDependency-for-data-change-events
另请参阅以下讨论 -