Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблема с EF Core DbContext в async методе API для InMemoryDatabase / 5 сообщений из 5, страница 1 из 1
10.03.2018, 19:39
    #39612846
love_bach
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с EF Core DbContext в async методе API для InMemoryDatabase
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
10.03.2018, 19:48
    #39612848
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с EF Core DbContext в async методе API для InMemoryDatabase
love_bach,
Выполнять правила:
- не пихать асинхронность везде
- контекст обычно на время запроса и закрывать сразу. Т.е 0,2 сек.
- транзакции как можно короче
...
Рейтинг: 0 / 0
10.03.2018, 21:02
    #39612863
love_bach
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с EF Core DbContext в async методе API для InMemoryDatabase
Petro123love_bach,
Выполнять правила:
- не пихать асинхронность везде
- контекст обычно на время запроса и закрывать сразу. Т.е 0,2 сек.
- транзакции как можно короче

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

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

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

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


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