将TransactionScope与SQLite一起使用会导致数据库锁定exception

我正在尝试调整使用TransactionScope ac#代码,并与Oracle一起使用SQLite。 我的代码的结构是这样一种方式,即访问SQLite数据库的事务范围内调用的每个方法都会创建自己的SQLiteConnection对象。

现在,我在尝试在TransactionScope块中打开第二个连接时遇到了问题。 我正在小心处理所有未使用的SQLiteConnection对象,方法是将它们包装在using语句中或调用finally块中的Dispose 。 无论我做什么,第二次调用SQLiteConnection.Open时间过了一段时间, 数据库被锁定exception。

示例代码:

 using(var transaction = new TransactionScope(TransactionScopeOption.Required)) { using(var connection1 = new SQLiteConnection(_connectionString)) { connection1.Open(); ... // Do stuff with the open connection } // Closes the connection using(var connection2 = new SQLiteConnection(_connectionString)) { // database locked exception connection2.Open(); ... } } 

到目前为止,我发现的所有问题都在本文中: http : //elegantcode.com/2010/07/02/using-transactionscope-with-sqlite/其中说:

即使在处理第一个连接时,TransactionScope也会保留独占的写入锁。 由于第一个连接无法完全关闭,因此打开第二个连接会导致锁定错误。

不幸的是,该文章没有提供任何解决方法。 我非常想坚持使用TransactionScope因为必须将SQLiteConnectionSQLiteTransaction对象传递给我的代码中的每个方法都会有很多重写努力,更不用说代码看起来会更加混乱。 任何建议?