我正在构建一个相当复杂的 Web 资源,它使用 Dynamics Web API 将数据读/写到 Dynamics。我有一种情况,我需要创建一个实体,该实体需要我需要创建的其他两个实体的 ID。为此,我使用两个异步调用来创建两个实体,然后使用从两个异步调用返回的数据来填充我创建的第三个实体中的数据记录。我遇到的问题是,当有人单击保存并关闭时,关闭发生在我的异步调用完成之前。发送第一个创建调用,然后发生关闭,而不会发生第二个或第三个创建。我还担心在保存时,我的 Web API 调用很可能会出现竞争情况,如果有人在保存后足够快地单击关闭,则可能无法保存所有数据。
我探索过的一些可能的解决方案要么不起作用,要么我不太喜欢
- 禁用保存并关闭(保存然后关闭时可能仍然存在竞争条件)
- 批处理(不确定这是否可行,但如果可行,难度会更大)
- 使用超时来暂停关闭(不要认为这会起作用)
- 保存完成后取消关闭并重新发出关闭(必须有更好的方法,对吧?)