Я сражался с OleDbConnection
, а теперь пытаюсь заставить его не кэшировать. В основном я получаю доступ к базе данных общего доступа, которая записывается из другого приложения, а затем я считываю значения (проверяя, что он очищается через время последней записи и последующую 1-секундную задержку).Disable/Flush OleDbConnection Cache
К сожалению, это абсолютно ненадежно.
Я читал (и сходит с ума), как отключить пулы соединений, и я впоследствии, после каждого возможного обновления, выполнив следующие действия перед повторным включением:
_connection.Close();
_connection.Dispose();
_connection = null;
OleDbConnection.ReleaseObjectPool();
GC.Collect();
В дополнение к этому, соединение строка отключает объединение пулов с OLE DB Services = -2
. Наконец, я также изменил PageTimeout
на «10» в реестре для Jet 4.0.
Все эти меры, к сожалению, не имеют никакого эффекта. Теперь единственное, что я могу придумать, это то, что упоминается в this Microsoft KB Article, и позвоните по телефону JRO.JetEngine.RefreshCache
. Единственная проблема заключается в том, что это аргумент ADODB.Connection
. Я бы предпочел не переписывать весь свой уровень базы данных и где записи читаются моим программным обеспечением, чтобы использовать устаревший COM-объект, чтобы иметь эту функциональность, но, похоже, это может быть единственным способом.
Мой вопрос заключается в том, что в настоящее время эта задача переписывается для использования ADODB (даже ADO.NET!), Можно ли отключить кеширование OleDbConnection
?