如何在异步项目中处理SQLite



SQLite不是异步的,并且公开的Microsoft.Data.SQLite ADO.net*Async方法是在后台同步实现的。

我的问题是:如何在asp.net core5 API项目中使用SQLite,该项目可以从异步代码中受益,还可以使用async/await关键字来协调它?

我看到两个选项

  • 使用";假的";*Async方法,并失去了异步代码对接触数据库的代码部分的好处。如果我理解正确的话,在.net内核中阻塞线程不会导致死锁(https://blog.stephencleary.com/2017/03/aspnetcore-synchronization-context.html)。如果我理解正确的话,这就像在线程池线程上执行同步代码一样,增加了异步/等待机制的开销
  • 只编写同步代码,会失去部分代码的好处

你认为哪一个更好?

谢谢!

我倾向于使用同步Async方法,但这不是一个强烈的偏好。我更喜欢Async的唯一原因是为了防止将来使用不同的数据库,或者SQLite在未来的版本中获得真正的异步方法。

你肯定想避免的是await Task.Run

最新更新