При использовании ADO.NET (возможно, я ошибаюсь, я не знаю, как его называют), я замечаю, что могу только начать транзакцию с соединением, а команда, похоже, имеет команду. Транзакция, которая получает мне данные транзакции, но не запускает самой транзакции? На самом деле, смотря, я вижу это в System.Data.SQLitesqlite поддерживает только 1 транзакцию?
// Summary:
// The transaction associated with this command. SQLite only supports one transaction
// per connection, so this property forwards to the command's underlying connection.
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public SQLiteTransaction Transaction { get; set; }
Итак, SQLite поддерживает только один период транзакции? я попытался открыть другое соединение, но затем моя транзакция бросила исключение из-за блокировки БД. Так что у меня не может быть больше одного соединения одновременно?
Это не совсем так. Режим общего кэша не влияет на количество транзакций. Когда общий кэш отключен, каждое соединение с базой данных должно блокировать файл базы данных исключительно для записи на него. Таким образом, для всех подключений доступна только одна транзакция записи. Тем не менее, в режиме общего кэша блокировка выполняется для каждой таблицы для всех потоков внутри процесса. В любом режиме чтение может выполняться параллельно. – jowo