Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何设置Oracle数据表的依赖关系_Asp.net_Oracle - Fatal编程技术网

Asp.net 如何设置Oracle数据表的依赖关系

Asp.net 如何设置Oracle数据表的依赖关系,asp.net,oracle,Asp.net,Oracle,在我们的项目中,我们希望使用Cache Dependency。经过一些搜索,我了解到它只适用于Sql Server,我们应该为它编写自己的CacheDependency类。以前有人尝试过吗?为Oracle表设置依赖关系的最简单方法是什么?我们使用Oracle 11g和.net 2008,感谢您的帮助Oracle允许您使用实施通知方案。如果您在谷歌上搜索dbms_alert,您会发现许多页面提供了如何使用它的示例,但基本上它涉及三件事: 当您希望通知客户端更改时(例如,在需要缓存依赖关系的表的in

在我们的项目中,我们希望使用Cache Dependency。经过一些搜索,我了解到它只适用于Sql Server,我们应该为它编写自己的CacheDependency类。以前有人尝试过吗?为Oracle表设置依赖关系的最简单方法是什么?我们使用Oracle 11g和.net 2008,感谢您的帮助

Oracle允许您使用实施通知方案。如果您在谷歌上搜索dbms_alert,您会发现许多页面提供了如何使用它的示例,但基本上它涉及三件事:

  • 当您希望通知客户端更改时(例如,在需要缓存依赖关系的表的insert/update/delete触发器中),可以调用dbms_alert.raise(使用您选择的标签)

  • 客户端将保持一个连接,在该连接中,客户端调用了dbms_alert.register函数(注册了特定的标签)

  • 在任何时候,客户端都可以调用dbms_alert.wait或.waitany;该函数将阻塞(或者您可以提供超时),直到发出警报。在您的情况下,您可以在需要显示正在监视的数据之前,立即调用waitany并短暂超时

  • 等待函数工作得很好-你不需要不断地轮询,除非你需要知道第二件事情发生了变化。相反,您可以在即将使用缓存数据时检查它们,以确保其是最新的。此外,在引发客户机的事务提交之前,不会通知客户机


    dbms_警报的最大限制是,一次只能有一个事务引发特定标签的未提交警报。换句话说,如果事务A引发警报“foo”,则事务B在引发“foo”时将阻塞,直到A回滚或提交,因此在可能需要很长时间的事务中使用警报通常不是一个好主意(除非阻塞其他用户是设计的一部分)。此外,如上所述,客户机需要保留一个用于检查通知的连接。这可能与您用于执行任何其他数据库活动的连接相同,但如果您正在编写一个执行大量连接池/共享的应用程序,则需要有一个工具,以便在保持缓存一致性所需的时间内保持连接。

    您可以使用通知: