C#OracleDependency OnChange多次触发

时间:2011-05-16 19:32:40

标签: c# .net oracle

据我了解,OracleDependency可以绑定到监视查询(而不仅仅是表)。我创建了2个命令对象和2个依赖项对象,但两者的查询都有不同的where子句,因此它们应该查看该表的2个不同子集。

我将这两个依赖项对象分配给同一个回调。我的期望是,当我在表中更改其中一个依赖项对象正在观察OnChange事件将触发该事件时。然后,我可以在OnChange事件中执行以下操作以获取触发更改的查询:

OracleDependency OraDep = (OracleDependency)sender; string sql = (string)OraDep.RegisteredResources[0];

所以我使用不同的where子句值对同一个表设置了2个查询。然后我进入数据库并更改其中一个,但令我惊讶的是,OnChange甚至会触发两次,上面的代码可以显示两个查询。

是否无法获得特定查询的依赖关系而不是整个表?我以为我读过你为特定查询设置的地方,where子句和所有。

1 个答案:

答案 0 :(得分:2)

Oracle更改通知监视对象而非查询。插入,更新或删除表新记录的任何更改,添加新列,重命名/删除。这就是你看到2次通知的原因。

一种方法是调用存储过程而不是查询。只接受1个通知。通知事件e.info告诉您插入/更新/删除的操作。因此,您可以编写if条件以仅响应插入通知,并根据您可以调用相应的sp或查询。

希望这有帮助。