我可以在我的 Web API 中调用 DBContext.SaveChangesAsync 并假设此任务将在我的方法返回时继续吗?

Posted

技术标签:

【中文标题】我可以在我的 Web API 中调用 DBContext.SaveChangesAsync 并假设此任务将在我的方法返回时继续吗?【英文标题】:Can I call DBContext.SaveChangesAsync in my Web API and assume this task will continue while my method returns? 【发布时间】:2022-01-14 15:03:51 【问题描述】:

我有一个基本的 Web API,其方法如下:

[Route("/Add/Data", Name = "AddData")]
[HttpPost]
public void InsertData(DataObject Data)

    DataContext.DataTable.Add(DataObject);
    DataContext.SaveChangesAsync(); // <===== This!

只是想确保这将按预期工作,因为在此方法结束时 SaveChangesAsync() 任务可能仍在执行。我可以依靠它来正常工作,因此我的网络服务可能会稍微更快地响应吗?

【问题讨论】:

【参考方案1】:

虽然很诱人,但不要这样做。

线程仍会在发送一个响应时被保留,但保存的任何错误都可能导致应用不稳定 - 您可能会收到客户看不到的故障日志。如果有其他操作需要这些数据,它们会在“不知道为什么”的情况下失败。调试将是一场噩梦。

将事务保留为事务 - 让服务器对您正在执行的操作给出真实的响应。

【讨论】:

以上是关于我可以在我的 Web API 中调用 DBContext.SaveChangesAsync 并假设此任务将在我的方法返回时继续吗?的主要内容,如果未能解决你的问题,请参考以下文章

无需等待结果即可从Web API调用另一个Web API

NGINX 在我的 Web API 中没有正确运行请求

node.js 函数调用顺序,Spotify Web API

从 Web API 同步调用外部 api

如何从烧瓶中调用另一个 web 服务 api

ASP.NET Core Web API DELETE 调用返回 405