我正在使用EF6async查询功能,例如varlist=awaitcx.Clients.Where(c=>c.FirstName.Length>0).ToListAsync();我还想在这些查询上启动SQL依赖项,以便在数据库中的数据发生变化时得到通知。我可以使用System.Runtime.Remoting.Messaging.CallContext执行此操作,如下所示:asyncTaskGetData(){using(ClientsContextcontext=newClientsContext())//subclassofDbContext{SqlDependency.Start
我有一个C#程序可以查询SQLServer数据库中的某些值。目前应用程序每分钟查询一次数据库以确保表是最新的。我希望能够做的是查询仅在数据库已更改/更新时完成。当数据库中的某些内容已更新时,我如何通知我的程序?谢谢 最佳答案 轮询数据库不是很优雅的解决方案。SqlDependency来自ADO.NET的文件对您的情况很有用。它不使用轮询,而是使用通知机制。通知由ServiceBroker在您的数据库中提供,因此需要在您的数据库中启用此服务。OnChange当指定表更改(更新、删除、插入..)时将引发事件下面是一个如何使用SqlDep
如何清理SQLServer以摆脱过期的SqlDependency对象?在我从SqlDepedency对象接收到事件后,我需要先创建一个新事件,然后才能获取新事件。但是,SQLServer进程的内存使用量会攀升,直到用完允许的内存(SQLServerExpress)。如何摆脱旧查询?代码://Func:RegisterTableListenerusing(SqlConnectioncn=newSqlConnection(Properties.Settings.Default.DatabseEventConnectionString)){if(cmd==null){cmd=cn.Creat
我需要持续监控数据库行以检查更改(更新)。如果其他来源有一些更改或更新,则应该在我的应用程序上触发该事件(我使用的是WCF)。有没有办法连续监听数据库行的变化?我可能有更多的事件来监视同一个表中的不同行。性能有什么问题吗?我正在使用C#Web服务来监控SQLServer后端。 最佳答案 您可以在各自的表上使用AFTERUPDATE触发器将项目添加到SQLServerServiceBroker队列。然后将排队的通知发送到您的网络服务。另一位发帖人提到了SqlDependency,我也想提一下,但MSDN文档有点奇怪,因为它提供了一个W
我正在设置一个需要做几件事的应用程序...1.)从tcp套接字接收一串xml数据。2.)将此数据插入sql表中。3.)触发器更新这些表中的大量内容并将它们放入输出表中。4.)SqlDependencies确认记录已插入输出表,需要通过相同的套接字发送回复。我遇到的问题是,如果我从客户端将整个消息发送到服务器,我必须.Close客户端,这使得无法收到响应,如果我不.Close客户端,只要消息适合一个数据包,我就可以收到响应(如果消息太长,服务器接收的消息将被切断,因此抛出一个错误)。我怎样才能使这项工作?所以现在不知所措,如果需要任何其他信息来帮助这项工作,请告诉我。我接近这个项目的最后
我正在使用SqlDependencyclass并一直试图找到Type的可能组合列表,但没有成功。,Source和InfoSqlNotificationEventArgs的属性目的。This是迄今为止我发现的最接近的。但是,我知道这并不能涵盖所有内容,因为我已经看到了Change/Client/Error组合。我真的很想知道我是否以最好的方式处理所有可能的情况。也就是说,只要有可能,我想重新建立“订阅”。例如,更改/客户端/错误是对中断SqlServer和我的应用程序之间通信的网络问题所做的。一旦重新建立通信,我就能够成功恢复。编辑:如果我举例说明我所担心的问题,也许会有所帮助。对于以下
我正在使用SqlDependencyclass并一直试图找到Type的可能组合列表,但没有成功。,Source和InfoSqlNotificationEventArgs的属性目的。This是迄今为止我发现的最接近的。但是,我知道这并不能涵盖所有内容,因为我已经看到了Change/Client/Error组合。我真的很想知道我是否以最好的方式处理所有可能的情况。也就是说,只要有可能,我想重新建立“订阅”。例如,更改/客户端/错误是对中断SqlServer和我的应用程序之间通信的网络问题所做的。一旦重新建立通信,我就能够成功恢复。编辑:如果我举例说明我所担心的问题,也许会有所帮助。对于以下
我一直在使用SqlDependency在.NET3.5应用程序中使用超过3年没有任何问题。场景如下:带有SqlDependency的中央窗口服务看一张table(我们称这张tableA)多个用户使用具有唯一SqlDependency的WPF应用程序每个用户观看一张table(又是一张table)用户在表A中排队处理一个工作单元SqlDependency在Windows服务上触发Windows服务处理表A中所有未完成的项目并将结果保存到表A为每个结果可用的用户触发唯一的SqlDependency用户处理他们的工作最近我已将系统升级到.NET4.5并开始看到将更改放入我们正在监视的表中的问
我一直在使用SqlDependency在.NET3.5应用程序中使用超过3年没有任何问题。场景如下:带有SqlDependency的中央窗口服务看一张table(我们称这张tableA)多个用户使用具有唯一SqlDependency的WPF应用程序每个用户观看一张table(又是一张table)用户在表A中排队处理一个工作单元SqlDependency在Windows服务上触发Windows服务处理表A中所有未完成的项目并将结果保存到表A为每个结果可用的用户触发唯一的SqlDependency用户处理他们的工作最近我已将系统升级到.NET4.5并开始看到将更改放入我们正在监视的表中的问
在我们的应用开发之初,我们大量使用SqlDependency来缓存数据库结果,直到通知告诉我们的应用获取新副本。在测试期间,我们注意到SQL数据库的性能受到SqlDependency通知服务的影响。我们缩减了使用SqlDependency的表的数量,并注意到性能有了很大的提高。所以,我们认为我们刚刚结束使用它,我们继续前进。我们现在只剩几张table了。后来,我们发现我们无法缩减将建立依赖关系的用户名的安全访问级别。我们可以为每个数据库设置多个连接字符串(一个用于依赖关系,一个用于应用程序的其余部分),但是对于多个数据库和数据库镜像,这是一件痛苦的事情(从SQL数据库管理员和应用程序开