我可以在我的 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 并假设此任务将在我的方法返回时继续吗?的主要内容,如果未能解决你的问题,请参考以下文章