我正在尝试通过锁定 sql server 2008(或直接从 asp.net mvc 如果可能)做一些简单的事情,但不确定如何处理它。
我有一个表(称为用户),用户名必须是唯一的。我想做一些事情
var myuser = db.users.FirstOrDefault(u => u.username == username);
if(myuser == null)
{
myuser = new user(username);
db.users.add(myuser);
}
return myuser;
我需要它是原子的,这样没有人可以在其他人之后尝试插入用户 foo 。如果这可以从 asp.net mvc 实现,那将是完美的,但如果不能,我需要直接在存储过程中进行。在存储过程中锁定正确的方法吗?如果是这样,我是否需要锁定整个用户表?在网上查看时,我也看到了带有 merge 关键字的内容,但我不确定这是否会有所帮助。