В разделении проблем у меня есть контроллер, обработчик и репозиторий. Если я хочу, чтобы IO базы данных выполнялась асинхронно, где я должен поместить метод async?Вложенные Async с Entity Framework
Например, я в настоящее время следующие:
В контроллере
public async Task<ActionResult> CreateOrder(OrderCreateModel ocm)
{
var order = await Using<CreateOffer>().Exeucte(ocm, userID);
...
}
В Handler
public async Task<Order> Execute(OrderCreateModel ocm, Guid userID)
{
...
return await _ordersRepository.CreateOrderAsync(new Order(ConvertToDataObject(ocm, userID));
}
И, наконец, в Repository
public async Task<Order> CreateOrderAsync(Order newOrder)
{
context.orders.Add(newOrder);
await context.SaveChangesAsync();
return newOrder;
}
я t похоже, что это слишком много методов Async. Получаю ли я те же результаты, если я:
- Как сделать метод репозитория асинхронным (и все вышеперечисленные методы синхронными)?
- Или если я просто сделаю метод контроллера Async (и сделаю все базовые вызовы синхронными)?
Каковы были бы лучшие практики, пересекающие разные слои, чтобы сделать работу данных асинхронной?
Большое спасибо! И статья замечательная. –