【问题标题】:Multi-threaded access to SQLite using C# and EntityFramework使用 C# 和 EntityFramework 对 SQLite 进行多线程访问
【发布时间】:2023-03-24 08:48:01
【问题描述】:

我在从多个线程访问 sqllite db 时遇到问题。

SqlLite 频繁输出“SQLite 错误(5):数据库被锁定”

here 解释了此问题的解决方案,以防您使用 NHibernate 但我不知道如何在 EntityFramework 上应用该解决方案。

有什么帮助吗?

编辑:

特别是我如何“管理会话范围以便跨多个线程重用相同的连接”?

【问题讨论】:

  • 你在线程之间共享上下文吗?
  • 我尝试过,但 sqllite 在这种情况下表现不佳。文档说每个线程都应该使用自己的实例。

标签: c# multithreading entity-framework sqlite system.data.sqlite


【解决方案1】:

我最终使用了 SQLCE 4.0,结果证明它可以完美地管理多线程和并发访问

【讨论】:

    【解决方案2】:

    如果您只使用 EF,只需将所有数据访问权限放在某种“DB Lock”周围

    // Prevent concurrent access to database, MyDatabase.Lock is a public static object that I use for locking all data access
    lock (MyDatabase.Lock)
    {
        using (var context = new DbEntities())
        {
        }
    }
    

    【讨论】:

    • 我有 100 个线程,我认为这会变慢,不是吗?不管怎样,我会试一试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2012-07-03
    • 2013-08-03
    • 1970-01-01
    • 2016-07-21
    相关资源
    最近更新 更多