【问题标题】:Can I create multiple write transactions on single SQLite connection?我可以在单个 SQLite 连接上创建多个写入事务吗?
【发布时间】:2016-12-10 05:01:25
【问题描述】:

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

【问题讨论】:

    标签: sqlite ado.net database-connection


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      我在此处突出显示了 read,因为我可以毫无问题地将新对象保存到数据库中,但是当第二个会话在事务上调用 Commit() 时,调用 Get() 或 QueryOvery() 会导致异常。我看到的问题是 SQLiteConnection 被处理并处理事务检查未处理的连接。这可能只是 NH​​ibernate 的问题,因为我没有用更通用的东西进行测试。

      【讨论】:

        猜你喜欢
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        • 2016-08-23
        • 1970-01-01
        • 1970-01-01
        • 2018-06-13
        • 2016-12-08
        • 1970-01-01
        相关资源
        最近更新 更多