更改数据是否会在sql依赖类之前排队?
当巨大的流量没有进行更改时,sql依赖类可以处理数据更改吗?
在这里我正在阅读一篇关于sqlDependency& amp; SignalR.链接是http://techbrij.com/database-change-notifications-asp-net-signalr-sqldependency
我不清楚几件事情.
.
private void dependency_OnChange(object sender,sqlNotificationEventArgs e) { JobHub.Show(); }
当数据发生变化时,dependency_OnChange事件将触发并且JobHub.Show();正在打电话
JobHub is name of class and not static class so i like to know how anyone can call `JobHub.Show();` from out side ??
>什么是GlobalHost类以及何时使用?
>文章代码相关问题.只是去这个链接
07000
查看视图中的jquery代码,获取数据并填充表.第一次当页面加载时假设表中存在5条记录,那么5条记录将被传递给jquery代码,它将只显示那5条记录,但是当表中的任何现有数据发生变化时,会发生什么?
唯一更改的行将到达客户端或包括已更改数据的所有数据将到达客户端?
如果你说只有改变的数据将编码,那么只需看到该链接中的视频.它显示在视频数据中逐个更改,更改反映在客户端,但如果您看到jquery代码,它只是先清空表并再次构建表.所以我的问题是,如果数据发生变化,只有变更数据会出现,那么一行应该显示在客户端….我是对的.但在视频中,变化显示以及其他数据也是如此.
请指导我.谢谢
解决方法
@H_403_40@ 好吧,ManniAT很接近,但不是很明显,这里发生的事情是sqlDependency通知事件是一次性的交易.所以当他指出它会第一次开火.您需要删除该处理程序(这可以防止在您对方法进行后续调用时出现多种情况)并重新添加它以便再次触发.如果您不想直接从sqlDependency设置方法返回数据,(我建议您不要这样做)您可以在需要重新建立监听器时调用此方法.回答:
1)通知触发后,您将调用Hub上的方法来刷新已更改的数据. sqlDependency Notifications应尽可能具体,当它触发时,您应该已经知道UI的哪个部分需要更新.
2)您没有将Hub设置为静态类,因此在调用show方法之前没有先实例化类的实例就不能调用类上的方法,在示例中我认为它是静态类,所以这就是为什么有用.将集线器设置为静态类并不是我在这种情况下建议的,我会创建一个单独的集线器跟踪类,就像在这个例子中一样. http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-server-broadcast-with-signalr-20
3)在这种情况下GlobalHost文件我相信是你的Global.asax,你启动和停止你的sqlDependencies.
修改示例:
try { using ( var connection = new sqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString)) { connection.Open(); using (sqlCommand command = new sqlCommand(@"SELECT [Id],[FName],[LName],[DOB],[Notes],[PendingReview] FROM [dbo].[Users]",connection)) { // Make sure the command object does not already have // a notification object associated with it. command.Notification = null; sqlDependency dependency = new sqlDependency(command); dependency.OnChange += new OnChangeEventHandler(dependency_OnChange); if (connection.State == ConnectionState.Closed) connection.Open(); command.ExecuteReader(); } } } catch (Exception e) { throw; } } private void dependency_OnChange(object sender,sqlNotificationEventArgs e) { sqlDependency dependency = sender as sqlDependency; if (dependency != null) dependency.OnChange -= dependency_OnChange; //Recall your sqlDependency setup method here. SetupDependency(); JobHub.Show(); }
我希望这可以帮助你!如果您还有其他问题,请告诉我.