【发布时间】:2016-12-10 05:01:25
【问题描述】:
我不应该有多个连接来访问 SQLite 数据库,因为在写入数据库时它会提供像 Database is locked 这样的错误。所以我创建了多个交易。但是,似乎每次都返回相同的交易。
【问题讨论】:
标签: sqlite ado.net database-connection
我不应该有多个连接来访问 SQLite 数据库,因为在写入数据库时它会提供像 Database is locked 这样的错误。所以我创建了多个交易。但是,似乎每次都返回相同的交易。
【问题讨论】:
标签: sqlite ado.net database-connection
每个连接只能有一个事务。
没有一种机制可以让您同时获得多个写入事务。
【讨论】:
使用 NHibernate 可以同时进行多个写入事务。诀窍是将隔离级别设置为 ReadCommitted。可以在代码here 中看到在 SQLite 中设置该值的能力。但是,我应该提到我对这种行为并不满意。只要第一个会话在第二个会话关闭之前不读取任何数据,两个具有活动事务的会话就可以正常工作。
我在此处突出显示了 read,因为我可以毫无问题地将新对象保存到数据库中,但是当第二个会话在事务上调用 Commit() 时,调用 Get() 或 QueryOvery() 会导致异常。我看到的问题是 SQLiteConnection 被处理并处理事务检查未处理的连接。这可能只是 NHibernate 的问题,因为我没有用更通用的东西进行测试。
【讨论】: