powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблема с EF Core DbContext в async методе API для InMemoryDatabase
5 сообщений из 5, страница 1 из 1
Проблема с EF Core DbContext в async методе API для InMemoryDatabase
    #39612846
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DbContext инжектится в контроллер (стандартный IoC). В некотором методе на SaveChangesAsync :
Код: c#
1.
2.
3.
4.
5.
public async void Some()
{
    ...     
    await _context.SaveChangesAsync();
}



Exception:
"Cannot access a disposed object. A common cause of this error is disposing a context that was resolved from dependency injection and then later trying to use the same context instance elsewhere in your application. This may occur if you are calling Dispose() on the context, or wrapping the context in a using statement. If you are using dependency injection, you should let the dependency injection container take care of disposing context instances"

UseInMemoryDatabase вариант используется, ServiceLifetime.Singleton эту проблему в режиме разработки/тестирования решает:
Код: c#
1.
2.
3.
4.
public void ConfigureServices(IServiceCollection services)
{
     services.AddDbContext<SomeContext>(opt => opt.UseInMemoryDatabase(), ServiceLifetime.Singleton);
}



Как тут правильно разрулить для случая "контекст-на-запрос"?
...
Рейтинг: 0 / 0
Проблема с EF Core DbContext в async методе API для InMemoryDatabase
    #39612848
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach,
Выполнять правила:
- не пихать асинхронность везде
- контекст обычно на время запроса и закрывать сразу. Т.е 0,2 сек.
- транзакции как можно короче
...
Рейтинг: 0 / 0
Проблема с EF Core DbContext в async методе API для InMemoryDatabase
    #39612863
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123love_bach,
Выполнять правила:
- не пихать асинхронность везде
- контекст обычно на время запроса и закрывать сразу. Т.е 0,2 сек.
- транзакции как можно короче

это капитан-очевидность

проблема в рассинхроне времени жизни контекста в стандартном Core API IoC. может конечно и в коде, но, по ексепшену, я пока не могу её локализовать
...
Рейтинг: 0 / 0
Проблема с EF Core DbContext в async методе API для InMemoryDatabase
    #39612872
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachэто капитан-очевидность
проблема в рассинхроне времени жизни контекста в стандартном Core API IoC. может конечно и в коде, но, по ексепшену, я пока не могу её локализовать
я выше рекомендации MS и дал капитану очевидности.
Чтобы локализовать нужно вывести в лог ошибки, стектрейс и время закрытия\открытия контекста.
Ваш капиатан-очевидность.
...
Рейтинг: 0 / 0
Проблема с EF Core DbContext в async методе API для InMemoryDatabase
    #39612903
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachКак тут правильно разрулить для случая "контекст-на-запрос"?

какой DI контейнер используете?
покажите как регистрируете (не синглетон)

если стандартный, то AddScoped
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблема с EF Core DbContext в async методе API для InMemoryDatabase
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]