Как работать с SQLite в асинхронном проекте

SQLite не является асинхронным, и открытые методы Microsoft.Data.Sqlite ADO.net реализуются синхронно под капотом.

Мой вопрос: как бы вы использовали SQLite в проекте API asp.net core 5, который мог бы выиграть от асинхронного кода, а также ключевых слов async / await для его координации?

Я вижу два варианта

  • использовать "подделку" *Asyncметоды и теряют преимущества асинхронного кода для частей кода, которые касаются db. Если я правильно понимаю, в ядре .net блокировка потока не приведет к тупикам (https://blog.stephencleary.com/2017/03/aspnetcore-synchronization-context.html). Если я правильно понимаю, это будет действовать как синхронный код, выполняющийся в потоке пула потоков, с добавленными накладными расходами на механизм async / await.
  • писать только синхронный код и терять преимущества для частей кода

Как вы думаете, какой из них лучше?

Спасибо!

1 ответ

Я бы предпочел использовать синхронные методы, но это не слишком сильное предпочтение. Единственная причина, по которой я бы предпочел на тот случай, если в будущем будет использоваться другая база данных, или SQLite получит реальные асинхронные методы в будущем выпуске.

Чего вы определенно хотите избежать, так это .

Другие вопросы по тегам