У меня есть таблица случайных уникальных номеров, которые они использовали в качестве идентификатора учетной записи для пользователя.
Этот сценарий будет использоваться в методе Register веб-API для получения первого уникального номера и присоединения его к пользователю, а после успешного создания извлеченный уникальный номер будет удален из базы данных:
public async Task<ActionResult> Register([FromBody] RegisterDto model)
{
//get the first unique number from the database
var UniqueNumber = _context.UniqueNumbers.First();
var user = new User
{
UserName = model.Email,
Email = model.Email,
PhoneNumber = model.PhoneNumber,
FirstName = model.FirstName,
LastName = model.LastName,
UserProfile = new UserProfile()
{
AccountNumber = UniqueNumber.Number,
},
};
//creating user
var createResult = await _userManager.CreateAsync(user, model.Password);
if (!createResult.Succeeded) return BadRequest(new { isSucceeded = createResult.Succeeded, errors = createResult.Errors });
//Delete the fetched UniqueId from the database
_context.UniqueNumbers.Remove(UniqueNumber);
_context.SaveChanges();
return Ok(new
{
isSucceeded = true
});
}
У меня вопрос: как предотвратить коллизию при нескольких вызовах API, поскольку он может возвращать один и тот же уникальный номер для нескольких вызовов?