我一直在OleDbConnection
努力争取让它不缓存。基本上我正在访问一个共享 Access 数据库,该数据库正在从另一个应用程序写入,然后我正在读回值(检查它是否通过 Last Write time 和随后的 1 秒延迟刷新)。
不幸的是,这完全不可靠。
我一直在阅读(并且发疯)如何禁用连接池,并且随后在每次可能的更新之后,在重新连接之前执行以下操作:
_connection.Close();
_connection.Dispose();
_connection = null;
OleDbConnection.ReleaseObjectPool();
GC.Collect();
除此之外,连接字符串使用 禁用连接池OLE DB Services = -2
。最后,我还在PageTimeout
Jet 4.0 的注册表中更改为“10”。
不幸的是,所有这些措施都没有效果。现在我唯一能想到的就是这篇 Microsoft 知识库文章中提到的内容,然后调用JRO.JetEngine.RefreshCache
. 唯一的问题是它的论点是一个ADODB.Connection
. 我宁愿不重写我的整个数据库层以及我的软件正在读取记录以使用旧 COM 对象只是为了拥有此功能,但它似乎很可能是唯一的方法。
我的问题是,虽然目前正在进行重写以使用 ADODB(甚至不是 ADO.NET!)的任务,是否可以禁用缓存OleDbConnection
?