这是否适合使用交易来查找具有共享姓氏的最后一人的序列号

本文关键字:共享 最后一人 序列号 查找 是否 交易 | 更新日期: 2023-09-27 17:55:15

我需要生成一个带有三个姓氏数字的ApplicantNumber,然后是具有该姓氏的人数。这是我的第一次尝试。我认为可序列化事务应该防止任何重复。会吗?

public string GenerateApplicantNumber(string surname)
{
    using (new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions {IsolationLevel = IsolationLevel.Serializable}))
    {
        return string.Format("{0}{1}", surname.Substring(0, Math.Min(Regex.Replace(surname, @"'s+", "").Length, 3)),
                                _profileService.ReadApplicantProfiles().Count(p => !p.IsDeleted && p.LastName == surname));
    }
}

这是否适合使用交易来查找具有共享姓氏的最后一人的序列号

在某些情况下,这将产生冲突。

  • 假设您有两个同名"Foo"的申请人。
  • 申请人
  • 1 将获得编号"Foo1",申请人 2 将获得"Foo2"。
  • 现在,您将申请人 1 的状态设置为已删除。
  • 第三个名为"Foo"的申请人进入系统。
  • 未删除的申请人数量为2,因此第三个申请人也会获得数字"Foo2",从而导致冲突。