可以向别人解释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。关于c# - Entity Framework 中的SaveChanges与SaveChangesAsync,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40931432/