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;
该方法只会触发一次。
答案 0 :(得分:-1)
嘿,我知道我可能有点太晚了,我遇到了类似的问题而且非常简单
您必须使用 [dbo] .TableName where = vlaue 这样的语法,而不仅仅是表名,而或 * “这样的运算符> for sql statement。
尝试这个...我知道它很愚蠢,但我有类似代码的完全相同的问题
e.info.ToString().Trim().ToLower() == "insert"
或更简单
e.info.ToString().Contains("Insert")
如果不是这样的话
然后你可能有循环函数,因为在sql依赖中,如果你试图向特定客户端发出通知,你将遇到拆分通知选择,更新或插入的问题。要查看一切是否正常工作以及由于重叠导致的其他问题,请添加静态列表并将读取器值添加到其中以查看可能的重叠。