Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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())

A way to get around this is to call .ToList() on your collection before iterating it.

And while you're at it, call context.SaveChanges() only once after the loop exits to speed up the code.