经过三个小时的调试和搜索,我希望这里的人有答案。如果我连续快速地调用以下函数(例如,相距
但是,有时该功能可以正常工作。在第一个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/