保证数据库中的独特价值

时间:2017-07-31 23:44:03

标签: c# asp.net-mvc asp.net-mvc-5

我的数据库中有一个注册表,其中的字段&& !(selectedIndex==selectedRow && $index==selectedColumn)需要是唯一的。

我想知道什么是最好的方法来保证我会在每种情况下提供唯一的号码。

我所做的是RegistrationNumber我保存新注册,例如:

Repository

我担心的是,如果两个人同时填写了注册表,我担心在第一个人到达void IMyRepository.Repository(Registration registration) { registration.RegistrationNumber = _getNewRegistrationNumber(); dbContext.SaveChanges(); } private string _getNewRegistrationNumber() { // what to do? get last registration number and increment? it could be // either integers or integers mixed with letters. } 之前,第二个人将进入{{{} 1}}函数可能会得到相同的dbContext.SaveChanges();

有任何建议吗?

[编辑] :GUID太长

2 个答案:

答案 0 :(得分:3)

您有3个选项:

  1. 如果插入新记录,请使用将自动创建的计算的Identiy列(自动增量)。缺点是,在你有一个数字
  2. 之前,你需要一个数据库的rountrip
  3. 使用public Component CloneMyself() { var clone = new PlayerComponent(this); // special constructor takes self type return (Component) clone; }
  4. 在数据库中使用unqiue索引并计算您自己的号码。如果该数字在保存时已存在,则可以捕获异常。

答案 1 :(得分:0)

保证唯一价值的最佳方式是GUID

auto r=last(mymap.begin(), mymap.upper_bound(20));
if (r) std::cout <<**r;
else std::cout << "nothing";
std::cout <<'\n';