我可以在单个SQLite连接上创建多个写事务吗?

时间:2015-10-27 12:00:38

标签: sqlite ado.net database-connection

我不应该有多个连接来访问SQLite数据库,因为在数据库中写入时会提供Database is locked之类的错误。所以我创建了多个交易。但是,似乎每次它返回相同的交易。

2 个答案:

答案 0 :(得分:0)

每个连接只能有一个事务。

没有一种机制可以同时获得多个写入事务。

答案 1 :(得分:0)

NHibernate可以同时进行多次写入事务。诀窍是将隔离级别设置为ReadCommitted。可以在代码here中看到在SQLite中设置该值的功能。但是,我应该提一下,我对这种行为并不满意。只要第一个会话在第二个会话关闭之前没有读取任何数据,两个活动事务会话就可以正常工作。

我强调在那里读取因为我可以将新对象保存到数据库而没有问题,但是当第二个会话在事务上调用Commit()时,调用Get()或QueryOvery()会导致异常。我看到的问题是SQLiteConnection被处理并处理未被处理的连接的事务检查。这可能是NHibernate的一个问题,因为我没有使用任何更通用的测试。