加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Entity Framework中的SaveChanges vs SaveChangesAsync

发布时间:2020-12-15 23:36:23 所属栏目:百科 来源:网络整理
导读:可以解释一下,SaveChanges和SaveChangesAsync之间的主要区别是什么?我应该在何处使用SaveChangesAsync? 性能如何变化? 我这里有两个例子: 异步功能: private static async void AddStudent(){ Student myStudent = new Student(); using (var context =
可以解释一下,SaveChanges和SaveChangesAsync之间的主要区别是什么?我应该在何处使用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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读