gpt4 book ai didi

c# - sqldependency 的替代方案

转载 作者:太空狗 更新时间:2023-10-29 21:22:05 25 4
gpt4 key购买 nike

我有一个包含聊天信息的 mssql 表。它有计算列,有数百万行,并且正在被第三方应用程序使用/填充。现在我想使用此表在我的网站上显示聊天记录,并且将来可能能够使用 signalr 发送消息。我使用 sqldependency 做了几个测试,它有效,但仅适用于对我的情况没有帮助的特定查询(我必须排除计算列,无法按最后一条消息排序,无法设置前 100 条消息等)

所以我的问题是什么是替代方案?使用每 x 秒轮询一次数据库的网络服务?

旁注,我对 table 没有任何影响。

最佳答案

如果您对实际需求考虑得更多一些,我认为您仍然可以使用 SqlDependency

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

select id from chat where chatRoomId = 123

作为“检测更改查询”。这只会告诉您“有一条新消息。或更多消息。”,仅此而已。然后,要获取实际的新行,您可以使用复杂的查询:

select 
top 100 someComplexColumn, everythingElse
from chat
where chatRoomId = 123
order by messageTime desc

只要“检测更改查询”足以将您不关心的大部分更改与您确实关心的更改分开,就可以了。请记住,SqlDependency 实际上并没有告诉您什么 发生了变化,或者关于数据的任何其他信息。它不关心有多少数据适合查询现在 - 它只跟踪适合您指定的过滤器的更改。由于聊天消息通常是不可变的,因此您可以只检查 id 列(例如“新项目”)。如果您的聊天消息是可编辑的,您还必须向“检测更改查询”添加一些 changedOn 列。

关于c# - sqldependency 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30105065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com