私は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から実装できれば完璧ですが、そうでない場合は、ストアドプロシージャで直接実行する必要があります。ストアド プロシージャでこれを行う正しい方法をロックしていますか? その場合、users テーブル全体をロックする必要がありますか? また、オンラインで検索すると、merge キーワードを使用したものを見たことがありますが、それが役立つかどうかはわかりません。