代码之家  ›  专栏  ›  技术社区  ›  Gregoire

反应太快

  •  1
  • Gregoire  · 技术社区  · 15 年前

    我有一个ASP.NET-MVC应用程序:

    • 打开数据库事务
    • 更新购物车状态和其他内容
    • 通过httpRequest将此购物车提交到其他Web服务器
    • 在数据库中注册传输及其代码状态
    • 发送确认邮件,确认命令已发送
    • 然后,如果没有发生错误,提交事务,否则回滚它。

    通常,在这之后,远程服务器向我的应用程序发送另一个Web请求到一个控制器操作,该操作将更新以前的传输并设置一个aknowledge字段。

    我的问题是,远程Web服务器有时速度非常快,并发送确认状态 之前 数据库中的传输插入已提交,因此更新失败。我怎么能阻止这个?

    谢谢。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Mike Chaliy    15 年前

    只需将提交操作分为两个阶段。第一个是太创建记录。然后进行诸如创建邮件等处理。第二个是进行真正的(逻辑)提交。

    using(var db = new Db(){
      db.Insert(
    } // This will commit first stage
    
    // Send email do other stuff
    
    using(var db = new Db(){
      var t = db.getTransmission()
       r.Commited = true;
       db.Save();
    } // This will logically commit
    
        2
  •  0
  •   bobber205    15 年前

    您是否可以更新数据库,提交并标记为不活动或无效,然后在获得确认状态后去掉这个标记?

    我可能误解了你到底在做什么。

    推荐文章