2017-12-03 259 views
-2

的等效性我正在研究一个.Net Razor网页,我想知道如何阻止读取注册表(以前我在AdO中使用AdLockOptimistic),直到更新完成,我的代码是...AdLock在剃刀页

 var sqlLeeUsr = "SELECT UsrSmlla FROM tbUsr WHERE ([email protected])"; 
     var usr = db.QuerySingle(sqlLeeUsr, intUsrNro); 
     if (usr != null) 
     { 
      intSecuencia = usr.UsrSmlla + 1; 

      var sqlModUsr = "UPDATE tbUsr SET [email protected] FROM tbUsr WHERE ([email protected])"; 
      db.Execute(sqlModUsr, intSecuencia, intUsrNro); 
     } 
+0

'我想知道如何阻止读取注册表(以前我在ADO中使用过AdLockOptimistic)'我不明白你的意思。这种情况下的“注册表”是什么?你的代码现在做什么?你想要它做什么呢? – mjwills

+0

我只想管理表tbUsr中的并发。我从这个表(tbUsr)中取出最后一个序列(UsrSmlla),然后给这个序列加上1,并保存在intSecuencia中,最后我用intSecuencia中的值更新字段UsrSmlla。我希望其他人在上一个过程完成时能够访问相同的注册表。 –

+0

请参阅AdLockOptimistic在... https://www.w3schools.com/asp/prop_rs_locktype.asp –

回答

0

,而不是查询的值,然后递增它,你应该在一个做了两次手术。那样的话,每次调用都会肯定得到一个唯一的值。

要执行的代码可能是:

var sqlLeeUsr = "UPDATE tbUsr SET UsrSmlla=UsrSmlla+1 
    FROM tbUsr 
    OUTPUT INSERTED.UsrSmlla 
    WHERE ([email protected])"; 
var changed = db.QuerySingle(sqlLeeUsr, intUsrNro); 

这将更新表并返回新(增量)值。