经过三个小时的调试和搜索,我希望这里的人有答案。如果我连续快速地调用以下函数(例如,相距


但是,有时该功能可以正常工作。在第一个ToList()调用上抛出异常:

void InsertOrUpdateMaterials(List<Material> materials)
{
    var id = GetUserId();
    var materialIds = materials.Select(x => x.MaterialId).ToList();

    // Remove old materials from DB
    var oldMaterials = Db.Materials.Where(p => p.CreatedBy == id &&
            materialIds.Contains(p.MaterialId)).ToList(); // exception
    Db.Materials.RemoveRange(oldMaterials);
    Db.SaveChanges();

    // Replace previous materials with the new ones in list
    Db.Materials.AddRange(materials);
    Db.SaveChanges();
}

奇怪的是,此错误从未在开发服务器上发生,因此我调查了可能的配置问题,但无济于事。

有时, Entity Framework 会抛出:



再次指向ToList()调用。有任何想法吗?

最佳答案

对于其他人,可能会遇到类似的问题。根据以上注释,该代码似乎使用了缓存的db-context。创建数据库上下文后,数据库连接中断(在应用程序中未安装StateChange处理程序)。连接断开后,应用程序使用缓存的db-context对它执行一些操作。

创建一个新的数据库上下文解决了这个问题。

关于c# - Entity Framework “Unexpected Connection State”异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28653352/

10-10 12:32