gpt4 book ai didi

c# - Entity Framework "Unexpected Connection State"异常

转载 作者:IT王子 更新时间:2023-10-29 04:50:39 24 4
gpt4 key购买 nike

经过三个小时的调试和搜索,我希望这里有人能给出答案。如果我连续快速调用以下函数(例如 < 0.1 秒), Entity Framework (使用 MySQL)将抛出以下异常。

System.InvalidOperationException: Unexpected connection state. When using a wrapping provider ensure that the StateChange event is implemented on the wrapped DbConnection.

但是,有时该功能可以毫无问题地工作。异常在第一次 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 抛出:

System.Data.Entity.Core.EntityCommandExecutionException: There is already an open DataReader associated with this Connection which must be closed first.

再次指向 ToList() 调用。有什么想法吗?

最佳答案

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

创建一个新的 db-context 解决了这个问题。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com