Entity Framework优化一:引发了“System.Data.Entity.Core.EntityCommandExecutionException”类型的异常

Posted dgg2015

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Entity Framework优化一:引发了“System.Data.Entity.Core.EntityCommandExecutionException”类型的异常相关的知识,希望对你有一定的参考价值。

错误信息:

“System.Data.Entity.Core.EntityCommandExecutionException”类型的异常在 EntityFramework.SqlServer.dll 中发生,但未在用户代码中进行处理。

其他信息:执行命令定义时出错。有关详细信息,请参阅内部异常。

跟踪代码找到详细信息:

技术图片

Entity Framework已有打开的与此Command相关联的DataReader,必须首先将它关闭。

EF内部是使用DataReader作为资料存取,所以如果没关闭连接就会产生Error,因为DataReader用同一个Connection。

解决方案有两种:

1、在连接字符串上面加上MultipleActiveResultSets=true,允许多个链接操作。

1 <connectionStrings>
2     <add name="Default" connectionString="Server=.;Database=20171208;User ID=sa;[email protected];MultipleActiveResultSets=true;" providerName="System.Data.SqlClient" />
3 </connectionStrings>

 2、在进行迭代的时候先取出放置在List中。

技术图片
1 foreach (var photo in context.Photographs.ToList())
2 
3        Console.WriteLine("图像:0,缩略图1大小", photo.Title, photo.ThumbnailBite.Length);
4 
5         // 使用显示加载 把
6         context.Entry(photo).Reference(p => p.PhotographFullImage).Load();
7          Console.WriteLine("高分辨率图像:0大小", photo.PhotographFullImage.HighResolutionBits.Length);
8 
技术图片

 

以上是关于Entity Framework优化一:引发了“System.Data.Entity.Core.EntityCommandExecutionException”类型的异常的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework Core 性能优化

Entity Framework Core 性能优化

优化多个 LINQ to Entity Framework 查询

Entity Framework 抛出意外异常,工作量大

一文学会使用Entity Framework Core

一文学会使用Entity Framework Core