让我们有一个带有ID和名称的假想表foo.我们对Web应用程序执行2个并行请求.这两个请求都会处理一些逻辑,然后作为此逻辑的一部分,将按名称判断表(foo.name==quest.name).如果数据库中不存在此条目,请创建它.
如果2个请求试图创建具有相同名称的相同条目,但只能存在一个这样的条目,您会如何处理呢?下面是说明问题的伪代码.
Process(Request request)
{
// some logic that takes around 3000ms
var foo = context.Foos.SingleOrDefault(f => f.Name == request.Name)
if (foo == null)
{
context = new Foo { Name = request.Name }
context.Foos.Add(foo)
}
car.Foo = foo;
context.Cars.Add(car);
context.SaveChanges()
}