0

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

我的问题:您将如何在 asp.net core 5 API 项目中使用 SQLite,该项目可以受益于异步代码,以及 async/await 关键字来协调它?

我看到两个选项

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

你认为哪一个会更好?

谢谢!

4

1 回答 1

1

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

您绝对要避免的是await Task.Run.

于 2021-08-11T18:21:59.460 回答