dependency_onchange方法在使用sqlnotificationargs.info而不是sqlnotificationargs.type时只触发一次

时间:2016-04-05 10:02:57

标签: c# sql asp.net signalr sqldependency

if (e.Type == SqlNotificationType.Change)

因此上面的代码在使用if (e.Info.ToString() == "Insert")时工作正常(每次都触发),但问题是当我在dependency_onchange中使用此private void dependency_Onchange(object sender, SqlNotificationEventArgs e) { if (e.Type == SqlNotificationType.Change) { if (e.Info.ToString() == "Insert") { SendNotification(); } } }

--pseudocode:

INSERT INTO DOCS (c1,c2) 
VALUES ('v1','v2'); 

SELECT @iddoc= scope_identity(); 

UPDATE table2 
SET y1='y1',y2='y2' 
WHERE iddoc=@iddoc;

该方法只会触发一次。

1 个答案:

答案 0 :(得分:-1)

嘿,我知道我可能有点太晚了,我遇到了类似的问题而且非常简单

您必须使用 [dbo] .TableName where = vlaue 这样的语法,而不仅仅是表名,而或 * “这样的运算符> for sql statement。

尝试这个...我知道它很愚蠢,但我有类似代码的完全相同的问题

e.info.ToString().Trim().ToLower() == "insert"

或更简单

e.info.ToString().Contains("Insert")

如果不是这样的话

然后你可能有循环函数,因为在sql依赖中,如果你试图向特定客户端发出通知,你将遇到拆分通知选择,更新或插入的问题。要查看一切是否正常工作以及由于重叠导致的其他问题,请添加静态列表并将读取器值添加到其中以查看可能的重叠。