【发布时间】:2018-06-16 03:50:45
【问题描述】:
我正在开发一个 asp.net web api 应用程序,我试图在 c# 中获取 oracle 数据库更改通知。但是当我初始化 1 个 oracle 依赖项时,一切都按预期工作,但是当我尝试从 2 个不同的 oracle 数据库初始化 2 个 oracle 依赖项时,我收到错误“'此操作需要使用对象相同的连接'"
var cmd = new OracleCommand("SELECT EMPNO FROM EMP r WHERE rownum <= 1 Order by EMPNO Desc", con1);
con1.Open();
cmd.AddRowid = true;
var dep = new OracleDependency(cmd);
dep.OnChange += new OnChangeEventHandler(dep_OnChange);
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
var cmd2 = new OracleCommand("SELECT EMPNO FROM EMP2 r WHERE rownum <= 1 Order by EMPNO Desc", con2);
con2.Open();
cmd2.AddRowid = true;
var dep2 = new OracleDependency(cmd2);
dep2.OnChange += new OnChangeEventHandler(dep2_OnChange);
DataTable dt2 = new DataTable();
dt2.Load(cmd2.ExecuteReader());
【问题讨论】:
-
为什么要设置第一个依赖,然后再将命令重用到 ExecuteReader 并将结果加载到数据表中?为什么不使用第三个连接和另一个命令呢?您的哪一行代码实际上引发了异常?
-
您可以尝试查看链接服务器,然后您只需要一个连接
-
是否可能为两个依赖项分配了相同的端口?您的第一个电话也应该是 ExecuteNonQuery,而不是填充数据表 - docs.oracle.com/cd/E11882_01/win.112/e23174/…
标签: c# asp.net oracle notifications