用户ID是两个用户同时在两台计算机上提交表单时的Mxing

时间:2016-01-27 12:27:42

标签: c# asp.net

我们有一个客户端应用程序,其中有十多个用户可以同时执行相同的操作,例如填写表单,当两个用户同时提交具有不同数据的相同表单时会出现问题。两个数据都是由用户点击了一个毫秒之后保存的用户我已经将用户ID放在会话中,我也尝试将userid放在user.identy.name和cookies中,但结果是一样请帮助我! :)

代码:

GetCustomerDetails() 
{ 
    Customer_Details custDetails = new Customer_Details(); 
    custDetails.Name = txtName.Text.Trim(); 
    return custDetails; 
} 

GetEntrepreneurshipDetails() 
{ 
    Entrepreneurship entre = new Entrepreneurship(); 
    ... 
    entre.AdvId = Guid.Parse(Session["userId"].ToString()); 
    return entre; 
} 

btnSubmit_Click 
{ 
    var custDetails = GetCustomerDetails(); 
    var = GetEntrepreneurshipDetails ();
    _advisorService.InsertEntreprenuershipDetails(custDetails, entreprenuershipDetails); 
}

1 个答案:

答案 0 :(得分:0)

您需要实施某种版本控制检查。

我通常会在表格上创建一个timestamp字段(日期时间),每次将数据保存在记录中时,RDBMS会自动更新该字段。

因此,当用户来编辑记录时,我会读取该值并保留它。当用户在隔离事务中确认操作时,我将先前读取的时间戳值与当前读取时间戳值进行比较

  • 如果两者相等,我保存新值(因此没有数据在该记录上有变化)
  • 其他方面,我向当前用户发出提醒,说明他/她需要重新进行操作,因为其他人最近更改了数据