2015-03-06 2 views
-1

У меня есть следующие в моем WebAPI контроллера:Entity Framework db.SaveChanges не работает при запуске в Task()

Task.Run(() => _userService.LoginWork(model.Username)); 

Где LoginWork имеет:

// var user = db.Users where... 
    user.LoggedIn = DateTime.UtcNow; 
    db.SaveChanges() 

очень простая операция, я 'm пытается выполнить, не блокируя работу WebAPI. Когда я не запускаю это внутри задачи, он работает нормально. Но когда я запускаю внутри задачи, db никогда не обновляется. Что тут происходит?

+0

не могли бы вы обновить свой вопрос с помощью метода работы с сайтом? –

+0

@FrebinFrancis сделано, это просто получить и обновить – RobVious

+0

Нет, я хочу видеть объявление метода, а также полное определение. –

ответ

1

Я собираюсь попытаться угадать здесь проблему, не видя всего кода.

Вы создаете новую задачу вне контекста запроса WebApi, и у вас есть контекст EntityFramework (или репозиторий, зависящий от контекста), введенный контейнером IoC, и этот контекст EntityFramework настроен как экземпляр для запроса.

Это приведет к тому, что этот метод вызовет ObjectDisposedException, но поскольку он находится внутри задачи async, вы фактически не видите исключение.

Смежные вопросы