gpt4 book ai didi

c# - Entity Framework 中的 SaveChanges 与 SaveChangesAsync

转载 作者:行者123 更新时间:2023-11-30 14:07:27 25 4
gpt4 key购买 nike

可以解释一下 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com