可以向别人解释SaveChangesSaveChangesAsync的主要区别是什么?我应该在哪里使用SaveChangesAsync以及何时使用?
表现如何?

我这里有两个例子:

异步功能:

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


同步功能:

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


提前致谢 !。

最佳答案

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

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


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

我建议阅读有关async/await的一些基本介绍,例如this

关于c# - Entity Framework 中的SaveChanges与SaveChangesAsync,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40931432/

10-09 04:32