实体框架中的SaveChanges vs SaveChangesAsync

Mih*_*nut 3 c# asynchronous async-await

可以解释一下,SaveChanges和之间的主要区别是SaveChangesAsync什么?我应该在何处使用SaveChangesAsync?性能如何变化?

我这里有两个例子:

异步功能:

private static async void AddStudent()
{
   Student myStudent = new Student();
   using (var context = new SchoolDBEntities())
   {           
      context.Students.Add(myStudent);
      await context.SaveChangesAsync();           
   }
}
Run Code Online (Sandbox Code Playgroud)

同步功能:

private static void AddStudent()
{
   Student myStudent = new Student();
   using (var context = new SchoolDBEntities())
   {           
      context.Students.Add(myStudent);
      context.SaveChanges();           
   }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢 !.

Use*_*rol 7

您的异步示例应如下所示:

private static async Task AddStudent()
{
   Student myStudent = new Student();
   using (var context = new SchoolDBEntities())
   {           
      context.Students.Add(myStudent);
      await context.SaveChangesAsync();           
   }
}
Run Code Online (Sandbox Code Playgroud)

同步和异步调用之间的区别在于后者不会阻塞调用线程.数据库操作受I/O限制:网络速度不快,SQL查询需要时间来处理.因此,我们可以将该线程返回给线程池,而不是等待结果(阻塞线程),以便可以处理并发用户请求.当您的网站同时遭到多个用户的攻击时,这对于扩展至关重要.但是,为了利用该async/await功能,您的整个调用链必须在堆栈中异步.

我建议你读一些基本的前奏就async/await喜欢这样.