Как мне назвать свой DAL в проекте ASP.NET Core Web Api - PullRequest
0 голосов
/ 29 мая 2018

У меня есть проект ASP.NET Core 2.1 Web Api с Full Framework, поскольку EF Core по-прежнему не поддерживает отображение хранимых процедур и создание сложных типов.

Так что мой DAL полагается на EF6 против .net 4.61с этим в моем контроллере.С одной стороны, я бы предпочел, чтобы асинхронные операции не блокировали пул потоков запросов, чтобы он мог возвращать и обслуживать другие запросы.С другой стороны, я не должен переносить синхронные операции с Task.Run ().Так что лучше всего выбрать:

[Route("api/[controller]")]
[ApiController]
public class ProductsController : Controller
{
    private readonly IDatabaseService databaseService;

    public ProductController(IDatabaseService databaseService)
    {
        this.databaseService = databaseService;
    }

    [HttpGet]
    public Task<ActionResult<Product>> GetAllProducts()
    {
        return Task.Run(() =>
        {
            return this.Ok(this.databaseService.GetAllProducts());
        });
    }
}

или

[Route("api/[controller]")]
[ApiController]
public class ProductsController : Controller
{
    private readonly IDatabaseService databaseService;

    public ProductController(IDatabaseService databaseService)
    {
        this.databaseService = databaseService;
    }

    [HttpGet]
    public ActionResult<Product> GetAllProducts()
    {
        return this.Ok(this.databaseService.GetAllProducts());
    }
}

Или я должен сделать это совершенно по-другому и объявить мой метод обслуживания

Task<List<Product> GetAllProducts();

так чего можно ждать?Я начал этот путь, но, с моей точки зрения, единственное отличие состоит в том, что я оборачиваю синхронный вызов БД на один уровень глубже.

Подводя итог моему вопросу:

  • Буду признателенчтобы выполнять асинхронные вызовы БД, чтобы в то же время обслуживать другие запросы
  • Мне кажется, что использование Task.Run () может быть не лучшим способом для достижения этого
  • Так что желучший образец здесь?

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...