sqldependency的替代方案

bla*_*aap 6 c# sqldependency signalr

我有一个mssql表,可以保存聊天信息.它具有计算列,具有数百万行,并由第三方应用程序使用/填充.现在我想使用此表在我的网站上显示聊天记录,并且将来有可能使用signalr发送消息.我使用sqldependency进行了几次测试,它只能用于我的情况下无法帮助的特定查询(我必须排除计算列,不能按最后一次msg排序,不能设置前100条消息等)

那么我的问题是什么呢?使用每隔x秒轮询数据库的Web服务?

旁注,我根本没有影响桌子.

Lua*_*aan 6

SqlDependency如果您对实际要求有更多考虑,我认为您仍然可以使用.

您用于检测更改的查询不必与用于获取更改的查询相同.所以你可以拥有

select id from chat where chatRoomId = 123
Run Code Online (Sandbox Code Playgroud)

作为"检测更改查询".这只会告诉你"有一条新消息.或者更多.",没有别的.然后,要获取实际的新行,您可以使用复杂的查询:

select 
 top 100 someComplexColumn, everythingElse 
from chat 
where chatRoomId = 123 
order by messageTime desc
Run Code Online (Sandbox Code Playgroud)

只要"检测更改查询"是分离的大部分来自你的变化,你不关心的变化不够好,不在乎,你的罚款.请记住,SqlDependency实际上并不告诉你什么改变,或其他任何有关的数据.它并不关心现在有多少数据适合查询- 它只跟踪适合您指定的过滤器的更改.由于聊天消息通常是不可变的,因此您可以只检查id列(例如"新项目").如果您的聊天消息是可编辑的,则还必须changedOn在"检测更改查询"中添加一些列.