响应太快

时间:2009-12-09 00:11:14

标签: c# asp.net-mvc asynchronous transactions

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

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

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

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

感谢。

2 个答案:

答案 0 :(得分:4)

只需分两个阶段进行提交操作即可。首先是创造记录。然后像创建邮件等处理。第二,做出真正的(逻辑)提交。

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

答案 1 :(得分:0)

您是否可以更新数据库,提交并标记为无效或无效,然后在收到确认状态后取走此标记?

我可能会误解你正在做什么。