Sqlite EF全局锁写

时间:2013-05-03 11:20:57

标签: entity-framework sqlite locking

我在实体框架上下文中映射了一个Sqlite数据库。

我从几个线程写这个数据库(不好主意,我知道)。但是,我尝试对我的应用程序使用全局锁,如下所示:

partial class MyDataContext : ObjectContext
{
    public new int SaveChanges()
    {
        lock (GlobalWriteLock.Lock)
        {
            try
            {
                int result = base.SaveChanges();
                Log.InfoFormat("fff Save changes performed for {0} entries", result);
                return result;
            }
            catch (UpdateException e)
            {
                throw e;
            }
        }
    }
}

但是,我从sqlite本身一直向下获取数据库文件锁定异常。怎么可能呢?

我能看到的唯一解释是base.SaveChanges方法在数据库解锁之前返回,并在返回后继续异步工作。

是这样的吗?如果是,我该如何克服这个问题?

注意:我的提交通常一次更新1-100个条目和/或大约1-100个条目的插入。

0 个答案:

没有答案