2012-06-28 43 views
5

Tôi đã chiến đấu với OleDbConnection trong một thời gian hiện đang cố gắng làm cho nó không phải là bộ nhớ cache. Về cơ bản tôi đang truy cập cơ sở dữ liệu Access được chia sẻ, được viết từ một ứng dụng khác, và sau đó tôi đọc lại các giá trị (đã kiểm tra xem nó đã được xóa thông qua Last Write time và sau 1 giây).Tắt/xóa bộ nhớ cache OleDbConnection

Thật không may, điều này hoàn toàn không đáng tin cậy.

Tôi đã đọc (và sẽ điên) làm thế nào để vô hiệu hóa các kết nối pooling, và tôi sau đó, sau mỗi lần cập nhật có thể, thực hiện những điều sau trước khi kết nối:

_connection.Close(); 
_connection.Dispose(); 
_connection = null; 
OleDbConnection.ReleaseObjectPool(); 
GC.Collect(); 

Thêm vào đó, kết nối chuỗi tắt kết nối tổng hợp với OLE DB Services = -2. Cuối cùng, tôi cũng đã thay đổi PageTimeout thành '10' trong sổ đăng ký cho Máy bay phản lực 4.0.

Rất tiếc, tất cả các biện pháp này không có hiệu lực. Bây giờ điều duy nhất tôi có thể nghĩ đến là làm những gì được đề cập trong số this Microsoft KB Article và gọi JRO.JetEngine.RefreshCache. Vấn đề duy nhất với điều đó là đối số của nó là ADODB.Connection. Tôi không muốn viết lại toàn bộ lớp cơ sở dữ liệu của mình và nơi các phần mềm đang được đọc bởi phần mềm của tôi để sử dụng đối tượng COM cũ chỉ để có chức năng này, nhưng dường như nó là cách duy nhất.

Câu hỏi của tôi là, trong khi hiện đang trải qua nhiệm vụ viết lại này để sử dụng ADODB (thậm chí không ADO.NET!), Có thể vô hiệu hóa bộ nhớ đệm của OleDbConnection không?

Trả lời

Các vấn đề liên quan