У меня проблема с ASP. NET MVC контроллером и асинхронной c операцией в контексте EF. Если возникает проблема (исключение) в entityContext, я не вижу / перехватываю / отлаживаю исключение, выполнение немедленно возвращается на конвейер asp. net и (в моем случае) я вижу 500. html стр. Это код, в котором у меня нет никакого контроля:
RENEWAL renewal;
using (var db = new MyEntities()) //Breakpoint #1
{
try
{
renewal = await db.RENEWAL.FindAsync(id, ctr);
}
catch (AggregateException ex)
{ //breakpoint #2
throw;
}
return View(renewal); //Breakpoint #3
}
Я могу отладить с точкой останова # 1, а в операции «FindAsyn c» возникает ошибка, но и точка останова № 2, и # 3 никогда не достигаются.
Итак, я изменил код следующим образом:
RENEWAL renewal;
using (var db = new MyEntities())
{
try
{
renewal = await db.RENEWAL.FindAsync(id, ctr)
.ContinueWith(t =>
{
Debug.Print("Continue With");
return t.Result; //breakpoint #2
});
}
catch (AggregateException ex)
{ //breakpoint #3
throw;
}
return View(renewal); //Breakpoint #4
}
Теперь точки останова № 2 и № 3 работают.
Я не сделал Я не совсем понимаю, как работает asyn c / await в MVC контроллере. Можете ли вы сказать мне разницу между первым и вторым блоком, и если есть правильный способ управления этими операциями в направлении EF от контроллера? Спасибо