2011-03-20 657 views
2

根据这个post答案它指出:如何将事务隔离级别设置为SQLite中的ReadUncommitted?

你知道吗,除非你已经启用共享高速缓存和两个连接都在同一个线程READUNCOMMITTED将恢复到序列化隔离?

工作在C#,我那么说干就干,如下定义的DLL导入:

[DllImport("System.Data.SQLite.dll", CallingConvention=CallingConvention.Cdecl)] 
public static extern int sqlite3_enable_shared_cache(int enable); 

我叫这项功能,让缓存并得到了0成功的结果状态时调用。尽管如此,在执行下面的行并试图将隔离级别设置为ReadUncommitted时,我仍然会遇到“isolationlevel”异常。

string connectionString = @"data source=d:\db\test.db3;datetimeformat=Ticks"; 
SQLiteConnection conn = new SQLiteConnection(connectionString); 
conn.Open(); 
IDbTransaction tran = conn.BeginTransaction(IsolationLevel.ReadUncommitted); 

此问题与我发布的另一个问题here有关。

如何在SQLite中使用ReadUncommitted隔离级别进行查询?

+0

能否请你告诉以下的BeginTransaction多一点的源代码?是否有任何理由将conn.BeginTransaction分配给接口而不是具体类型? – timothyclifford 2011-03-20 21:06:27

+0

实际上,我使用提供程序工厂,但为了本文的目的,我简化了代码以隔离异常。异常发生在对conn.BeginTransaction(IsolationLevel.ReadUncommited)的调用中。虽然我可以发布更多的代码,但我不清楚为什么后面的代码是相关的。 – Elan 2011-03-21 02:19:11

回答

相关问题