在使用Entity Framework的ASP.NET MVC中使用async时,我很好奇整个堆栈是否真的异步。
即。如果异步操作调用.SaveChangesAsync
,SQL Server驱动程序是异步还是只是阻塞并在其自己的线程池中运行?
答案 0 :(得分:0)
驱动程序不属于EF,并且没有“驱动程序”,因为EF可以与多个驱动程序一起使用。
EF一直到ADO.NET都是异步的。
ADO.NET以向后兼容的方式提供异步操作,因此如果您使用旧驱动程序,它将同步运行操作,但提供程序可以使用真正的异步操作覆盖此操作。
ADO.NET中的SQLServer提供程序,它最可能与SQLServer一起使用的提供程序使用异步I / O.许多(大多数?)其他提供者也是如此。