DateTime.Now.Ticks在循环内重复

Sam*_*Sam 0 c#

我正在尝试为表的主键生成一个唯一的ID,我正在使用DateTime.Now.Ticks它.这是现在我们无法使用的要求Identity.

但有时,在循环中它会在连续迭代中生成相同的ID.我的简化代码看起来像这样

    While(IncomingData.Next())
    {
     IncomingData.ID = DateTime.Now.Ticks;
     // Other Operations
      .
      .
      .
     InsertInDatabase(IncomingData);
    }
Run Code Online (Sandbox Code Playgroud)

是因为我的处理器指令/秒的速度大于Ticks测量的精度吗?我正在使用I5 2.9GHZ处理器.虽然我已经通过引入计数变量并将其添加到解决了我的问题ticks.这不是一个好方法.无论如何,有人可以为我分解它,因为a如何tick计算是否依赖于cpu周期?谢谢.

Che*_*hen 5

使用DateTime.Now.Ticks数据库身份是一个非常糟糕的主意.即使您解决了问题中的"重复问题",您的应用程序可能会在将来中断,例如,一个非常常见的情况,应用程序部署在多个服务器上.

您可以(1)使用数据库自​​动生成,自动增加ID,或(2)用于Guid解决问题.

编辑在数据库性能考虑下,long在大多数情况下,自动增加的id比guid具有更好的性能.

编辑款待tick随着时间的测量就像年/月/日/时/分/秒/毫秒/纳秒的单位.Tick介于毫秒和纳秒之间,1毫秒= 100000个刻度.