我一直在努力与OleDbConnection
现在试图让它不缓存。基本上我正在访问一个共享的Access数据库,这个数据库正从另一个应用程序写入,然后我正在读取数据(通过最后一次写入时间和后续1秒的延迟检查它是否被刷新)。禁用/刷新OleDbConnection缓存
不幸的是,这是完全不可靠的。
我一直在读(并要疯了)如何禁用连接池,和我随后,每一个可能的更新之后,在重新连接之前执行以下步骤:
_connection.Close();
_connection.Dispose();
_connection = null;
OleDbConnection.ReleaseObjectPool();
GC.Collect();
除此之外,连接字符串会禁用连接池OLE DB Services = -2
。最后,我还在Jet 4.0的注册表中将PageTimeout
更改为“10”。
所有这些措施都不幸没有效果。现在唯一能想到的就是this Microsoft KB Article中提到的,并致电JRO.JetEngine.RefreshCache
。唯一的问题是它的参数是ADODB.Connection
。我宁愿不重写我的整个数据库层,以及我的软件正在读取记录的位置,以便使用遗留的COM对象来实现此功能,但似乎它可能是唯一的方法。
我的问题是,虽然目前正在进行重写使用ADODB(甚至不是ADO.NET!)的任务,但可以禁用缓存OleDbConnection
?