Каков наилучший способ управления соединениями SQLite в Windows из приложения .NET? - PullRequest
0 голосов
/ 24 июня 2010

Я использую SQLite в Windows из приложения .NET.Приложение .NET использует библиотеку с открытым исходным кодом System.Data.SQLite .

В моем приложении множество потоков обращаются к одной и той же базе данных.Лучше ли:

  1. Создавать и уничтожать соединения по мере необходимости (какое максимальное количество я могу иметь?)
  2. Создать долгоживущее соединение и использовать егоиз разных потоков (это безопасно?)
  3. Что-то еще?

Сначала я выбрал вариант №2, но получил случайные / периодические ошибки, связанные с транзакциями, когдадоступ к соединению из других потоков.С тех пор я перешел к выбору № 1, и ошибка исчезла.

1 Ответ

3 голосов
/ 24 июня 2010

Согласно FAQ по SQLite , последняя версия SQLite позволяет нескольким потокам использовать одно и то же соединение, но только один из них может одновременно иметь транзакцию.

Мне не известно о каких-либо встроенных ограничениях на количество подключений, которые могут быть активны одновременно.

Я рекомендую настроить «поток базы данных», который владеет соединением и выполняет задачи от имени других потоков. Это то, что я делаю в своем процессе .NET 4 SQLite, и он работает довольно хорошо.

P.S. Если вам интересно, я недавно написал в блоге сообщение о с использованием SQLite через Entity Framework 4 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...