我有一个在实体框架上下文中映射的 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 个条目。