sta*_*ikk 5 c# sqlite transactionscope
我正在尝试调整使用TransactionScopeOracle 并与 Oracle 一起使用的 ac# 代码,以便也与 SQLite 一起使用。我的代码的结构方式是,在访问 SQLite 数据库的事务范围内调用的每个方法都会创建自己的SQLiteConnection对象。
现在我在尝试打开TransactionScope块内的第二个连接时遇到了问题。我SQLiteConnection通过将它们包装在 using 语句中或调用Disposefinally 块来小心地正确处理所有未使用的对象。无论我做什么,第二次调用都会SQLiteConnection.Open在数据库被锁定异常一段时间后超时
。
示例代码:
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();
...
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我对这个问题的所有发现都在这篇文章中:http : //elegantcode.com/2010/07/02/using-transactionscope-with-sqlite/它说:
即使在处理第一个连接时,TransactionScope 也持有独占写入器锁。因为第一个连接不能完全关闭自身,打开第二个连接会导致锁定错误。
不幸的是,这篇文章没有提供任何解决方法。我很愿意坚持使用TransactionScope由于具有传递SQLiteConnection和SQLiteTransaction对象在我的代码,每个方法将是一个很大的努力改写更别提代码看起来更凌乱。有什么建议吗?
| 归档时间: |
|
| 查看次数: |
2312 次 |
| 最近记录: |