【问题标题】:How to set threading mode in SQLite with Entity Framework?如何使用实体框架在 SQLite 中设置线程模式?
【发布时间】:2016-06-14 13:54:17
【问题描述】:

我将 SQLite 与 Entity Framework Core (RC1) 一起使用。

我读到了SQLite supports three different threading modes: Single-thread, Multi-thread and Serialized

如何在运行时设置我想与我的数据库一起使用的模式?

【问题讨论】:

    标签: multithreading sqlite entity-framework-core


    【解决方案1】:

    Microsoft.Data.Sqlite 引用官方的SQLite NuGet 包。该软件包包含已使用SQLITE_THREADSAFE=1(序列化)编译的 SQLite 版本。 Microsoft.Data.Sqlite 目前没有公开 API 来改变这一点,System.Data.SQLite 也没有。

    另见aspnet/EntityFramework#5466

    【讨论】:

    • 未来是否有可能设置线程安全选项?
    【解决方案2】:

    这是通过打开一个设置了适当标志的数据库来完成的。 SQLITE_OPEN_NOMUTEX 用于多线程或SQLITE_OPEN_FULLMUTEX 用于序列化。看起来可以通过 C 接口进行标志设置:

    https://www.sqlite.org/c3ref/c_open_autoproxy.html

    因此,如果您不直接使用 C 接口,那么您将受到 EF 的摆布,以及他们是否决定支持数据库打开时的标志设置。

    【讨论】:

      猜你喜欢
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 2017-04-14
      • 2015-08-12
      • 2012-05-12
      相关资源
      最近更新 更多