Получение "новой транзакции не разрешено, поскольку в сеансе запущены другие потоки".
Это не имеет ничего общего с циклами foreach или с чем-то, с чем люди обычно сталкиваются в связи с этим сообщением.
Я использовал EF4 с шаблоном репозитой и общим контекстом, открытым по всему запросу. Что-то происходит, не могу точно определить, что именно, и я получаю это сообщение, как только я пытаюсь сохранить изменения в контексте, между запросами, и оно исчезает только после перезапуска пула приложений.
Я закрываю соединение? Как я могу сказать? Я использую свежий контекст для каждого запроса? Да.
Что происходит? Есть ли обходной путь?
Редактировать: (фабрика контекста)
private static Dictionary<string, CoinEntities> _instances;
public static CoinEntities DefaultInstance
{
get
{
if (HttpContext.Current == null)
{ //todo: mock instead. testing.
if (!Instances.ContainsKey("_TEST"))
Instances["_TEST"] = new CoinEntities();
return Instances["_TEST"];
}
if (!Instances.ContainsKey("_DEFAULT"))
Instances["_DEFAULT"] = new CoinEntities();
return Instances["_DEFAULT"];
}
}