New transaction is not allowed because there are other threads running in the session LINQ To Entity

c#, linq, linq-to-entities

Solution

The `pp` variable isn't a collection of objects, it's an enumerator that can return objects. While you use the enumerator, the source has to remain open.

Use the `ToList` method to realise the enumerator into a collection. That will read all items from the enumerator and close the connection to the source, so that you can use the connection for other things.

foreach (var p in pp.ToList())

Problem

Any ideas on why this could be breaking? ``` foreach (var p in pp) { ProjectFiles projectFile = (ProjectFiles)p; projectFile.Status = Constants.ProjectFiles_ERROR; projectFile.DateLastUpdated = DateTime.Now; context.SaveChanges(); } ``` I read that the workaround the issue, is to retrieve the results in one go before the foreach loop. But didnt I do that? "pp" is the collection of results in my case

Original source

Related problems