Сериализованный режим в System.Data.SQLite для .NET

Я работаю над приложением .NET, использующим SQLite. Согласно документации SQLite поддерживает многопоточность и может использоваться в одном из следующих 3 режимов.

  1. Однопоточный. В этом режиме все мьютексы отключены, а SQLite небезопасно использовать более чем в одном потоке одновременно.
  2. Многопотоковый. В этом режиме SQLite может безопасно использоваться несколькими потоками при условии, что ни одно соединение с базой данных не используется одновременно в двух или более потоках.
  3. Сериализовано. В сериализованном режиме SQLite может безопасно использоваться несколькими потоками без ограничений.

В соответствии с этими режимами я пытаюсь использовать Serialized, где я использую одно соединение для нескольких задач. Но я получаю сообщение об ошибке "Операция недействительна из-за текущего состояния объекта".

Я предполагаю, что это связано с разделением одного соединения между задачами. Но в соответствии с сериализованным режимом я должен иметь возможность делиться соединением без какой-либо явной блокировки или реализации мьютекса. Может ли кто-нибудь объяснить мне, как я могу использовать сериализованный режим в приложении .net? Требуется ли для этого указание строки подключения определенным образом?

Заранее спасибо !


person D Deshmane    schedule 16.01.2017    source источник
comment
Просто используйте одно соединение на поток.   -  person CL.    schedule 16.01.2017
comment
Но это будет многопоточный режим. Я не хочу создавать соединение каждый раз, когда разговариваю с SqliteDB, поэтому перехожу к режиму сериализованной потоковой передачи.   -  person D Deshmane    schedule 16.01.2017
comment
@КЛ. Действительно ли System.Data.SQLite поддерживает режим потоковой передачи Serialized?   -  person D Deshmane    schedule 16.01.2017
comment
Привет @DDeshmane, ты нашел, как включить сериализованный режим? (Я ищу то же самое...)   -  person TeaHoney    schedule 02.07.2017


Ответы (1)


Сериализованный — это режим по умолчанию. Не закрывайте открытое соединение снова, вместо этого используйте одно и то же соединение везде без необходимости его закрытия. SQLite позаботится об остальном. Надеюсь это поможет.

person D Deshmane    schedule 02.07.2017