錯誤信息:
“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;Password=1qaz@WSX;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 }