我正在尝试为表的主键生成唯一 ID,并且我正在使用DateTime.Now.Ticks
为了它。这是目前我们无法使用的要求Identity
.
但有时,在循环内,它会在连续迭代中生成相同的 ID。
我的简化代码如下所示
While(IncomingData.Next())
{
IncomingData.ID = DateTime.Now.Ticks;
// Other Operations
.
.
.
InsertInDatabase(IncomingData);
}
是否是因为我的处理器每秒指令的速度大于其精度Ticks
被测量?
我使用的是 I5 2.9GHZ 处理器。虽然我通过引入计数变量并将其添加到解决了我的问题ticks
。这感觉不是一个好方法。无论如何,有人可以帮我把它分解一下吗?tick
计算是否取决于CPU周期?谢谢。
Using DateTime.Now.Ticks
因为数据库身份是一个非常糟糕的主意。即使您解决了问题中的“重复问题”,您的应用程序将来也可能会崩溃,例如,一个非常常见的场景,应用程序部署在多个服务器上。
您可以 (1) 使用数据库自动生成、自动增加的 id,或 (2) 使用Guid
解决这个问题。
EDIT数据库性能考虑下,自动增加long
在大多数情况下,id 的性能比guid 更好。
EDIT Treat tick
作为时间测量单位,就像年/月/日/小时/分钟/秒/毫秒/纳秒一样。Tick
介于毫秒和纳秒之间,1 毫秒 = 100000 个刻度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)