禁用/刷新OleDbConnection缓存

Rud*_*ser 8 c# oledb caching oledbconnection jet

我一直在争取OleDbConnection一段时间,试图让它不缓存.基本上我正在访问一个共享的Access数据库,它正在从另一个应用程序写入,然后我正在读回值(检查它是否通过Last Write时间和随后的1秒延迟刷新).

不幸的是,这完全不可靠.

我一直在阅读(并且疯狂)如何禁用连接池,随后在每次可能的更新之后,在重新连接之前执行以下操作:

_connection.Close();
_connection.Dispose();
_connection = null;
OleDbConnection.ReleaseObjectPool();
GC.Collect();
Run Code Online (Sandbox Code Playgroud)

除此之外,连接字符串禁用连接池OLE DB Services = -2.最后,我还在PageTimeoutJet 4.0的注册表中更改为"10".

遗憾的是,所有这些措施都没有效果.现在,我唯一能想到的就是这篇Microsoft知识库文章中提到的内容和电话JRO.JetEngine.RefreshCache.唯一的问题是它的论点是ADODB.Connection.我宁愿不重写我的整个数据库层以及我的软件正在读取记录以使用传统COM对象来获得此功能,但似乎它可能是唯一的方法.

我的问题是,虽然目前正在进行重写以使用ADODB(甚至不是ADO.NET!)的任务,是否可以禁用缓存OleDbConnection

小智 0

您可能会运气好,将“;Jet OLEDB:Flush Transaction Timeout”属性设置为 0 或某个较低的数字。

请参阅文档