Иногда я получаю следующее исключение: «Экземпляр ObjectContext был удален и больше не может использоваться для операций, требующих подключения».
Воспроизведение этого исключения нестабильно и его очень трудно поймать.
Обычно я получаю это исключение, когда браузер отправляет два или более запросов одновременно.
Был использован интеграционный тест, запускающий сотни потоков одновременно с уникальными экземплярами DbContext и последующим выполнениеммодельные методы.Тем не менее, этот тест не выдал ни одного исключения и прошел.
Исключение выдается при первом запросе к Db:
public IForumCategory GetCategoryById(int id)
{
return Repository.ForumCategories.FirstOrDefault(a => a.Id == id);
}
LazyLoading отключен, и свойства навигации не используются.«Включения» также не используются и заменяются «объединениями».
Удаление DbContext:
public abstract class WebApiDependencyScope<TModelFactory> : IDependencyScope where TModelFactory : ModelFactory
{
...
public virtual void Dispose()
{
ModelFactory.Dispose();
}
...
}
Затем DbContext удаляется ModelFactory, поэтому его нельзя рассматривать как ранний DbContext.распоряжение
Обновленная информация: DbContext, созданный для запроса AspNet WebApi Framework:
public override IDependencyScope BeginScope()
{
ISiteRepositoryFactory repositoryFactory = new SiteAspNetRepositoryFactory(Config);
GameModelFactory factory = new GameModelFactory(
repositoryFactory, LocaleProvider, Config, Authenticate);
Scope = new GameWebApiDependencyScope(factory);
return Scope;
}