我正在研究.Net Razor网页,我想知道如何阻止读取注册表(之前我在ADO中使用了AdLockOptimistic),直到更新完成,我的代码是......
var sqlLeeUsr = "SELECT UsrSmlla FROM tbUsr WHERE (UsrNro=@0)";
var usr = db.QuerySingle(sqlLeeUsr, intUsrNro);
if (usr != null)
{
intSecuencia = usr.UsrSmlla + 1;
var sqlModUsr = "UPDATE tbUsr SET UsrSmlla=@0 FROM tbUsr WHERE (UsrNro=@1)";
db.Execute(sqlModUsr, intSecuencia, intUsrNro);
}
答案 0 :(得分:0)
不是查询值,然后递增它,你应该在一个中执行这两个操作。这样,每次调用都会肯定获得唯一值。
您想要执行的代码可能是:
var sqlLeeUsr = "UPDATE tbUsr SET UsrSmlla=UsrSmlla+1
FROM tbUsr
OUTPUT INSERTED.UsrSmlla
WHERE (UsrNro=@1)";
var changed = db.QuerySingle(sqlLeeUsr, intUsrNro);
这将更新表并返回新的(递增的)值。