最近发现一个 ASP.NET Core 项目的日志中有时会出现下面的错误:
2025-10-09 13:01:14.976 [Error] An exception occurred while iterating over the results of a query for context type 'Cnblogs.Infrastructure.Data.EfUnitOfWork'.
System.InvalidOperationException: Invalid operation. The connection is closed.
...
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
请问如何解决这个问题?
在使用 Entity Framework Core (EF Core) 进行数据库查询时,有时会遇到“an exception occurred while iterating over the results of a query for context type”的错误。这通常是由于在前一个操作完成之前,尝试在同一上下文中启动第二个操作所导致的。
EF Core 的上下文实例不是线程安全的。如果在多线程环境中使用同一个上下文实例,会导致此错误。
确保在依赖注入配置中正确设置上下文的生命周期。通常应使用 Scoped 或 Transient 生命周期,而不是 Singleton。