簡體   English   中英

一起使用 SQLiteConnection 和 SQLiteAsyncConnection

[英]Use SQLiteConnection and SQLiteAsyncConnection together

給定的

我使用SQLite-Net NuGet 包。
我有用於數據庫操作的舊同步 API ( SQLiteConnection )。

我需要的

我想使用新的異步 API 進行數據庫操作( SQLiteAsyncConnection

問題

舊的同步 API 足夠大,我無法快速遷移到異步 API,因此我需要使用一個數據庫文件同時使用同步和異步 API,如下所示:

var database = new SQLiteConnection(connectionString); // Synchronous API
var databaseAsync = new SQLiteAsyncConnection(connectionString); // Asynchronous API

如果我嘗試像上面一樣在一個數據庫文件上使用兩個連接,則會出現不同步的問題,例如使用同步連接創建表不能通過異步連接使表可用。 我假設連接內部有一些內部緩存或其他東西......

如何正確使用一個數據庫文件和兩個(同步和異步)連接?
還有..可以嗎?

附加信息

  • 同步和異步 API 將被鎖完全覆蓋。 所以我希望同時使用這兩個 API 不會發生沖突。

多個 SQLite 進程可以同時訪問數據庫。

無需擔心寫入訪問,因為每當您使用其中一個連接進行寫入時,該對象都會將數據庫鎖定一小段時間。

您的“不同步”問題可能來自默認情況下停用的預寫日志選項。

要激活它,只需將以下部分附加到您的連接字符串:

;PRAGMA journal_mode=WAL;

當您慢慢轉向新的異步 API 時,這應該允許並發讀寫訪問。

最重要的是,還請啟用共享緩存選項以在您的實例之間共享相同的數據緩存。 請使用以下命令激活它:

PRAGMA cache=shared

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM