这是否适合使用交易来查找具有共享姓氏的最后一人的序列号
本文关键字:共享 最后一人 序列号 查找 是否 交易 | 更新日期: 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",从而导致冲突。