如何在异步调用期间正确处理表上的UpSert操作?

时间:2017-04-05 10:41:47

标签: c# sql-server ado.net optimistic-concurrency

我正在努力寻找以下情况的工作和最佳解决方案:

  1. 我在云端编写了WebService,用c#编写;
  2. 此服务的终点可以随机时间随机调用;
  3. 在处理请求期间,我们调用我们在DB中的表上读取\ write操作的方法(我简化了流程):
    • 我们从表格中读取数据
    • 应用一些验证规则
    • 并根据特定规则更新一些字段并将数据写回表
    • 提交交易
  4. 真正的问题是当我们对一个用户同时有2个或3个请求时 - 当我们从表中读取无效数据时,我们很容易就会遇到这种情况,因为之前的操作还没有保存结果(提交事务)。

    • 我尝试设置隔离级别,但这是死锁的原因。
    • 在DB级别上使用Upsert操作需要将逻辑移动到存储过程 - 这是不可取的。

    所以问题是:正确同步DB工作的最佳方法是什么?感谢您的任何建议。

    工具: 实体框架6.0,Azure SQL,Azure

0 个答案:

没有答案