可以解释某人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();
}
}
提前致谢!
答案 0 :(得分:7)
你的异步示例应该是这样的:
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
{{1}}上的一些基本介绍。