ASP.NET:生成订单ID?

时间:2012-05-22 22:43:39

标签: asp.net sql-server random

我正准备启动我在ASP.NET中设计的网站。

问题是,我不希望我的客户拥有超低订单ID(例如:#00000001)。

如何生成唯一(和随机)订单ID,以便客户获得订单号,如K20434034?

4 个答案:

答案 0 :(得分:1)

业务层和数据库都有多个选项:

考虑

  • 随机数有碰撞的机会
  • 最好不要公开内部ID,尤其是顺序ID
  • 如果用户必须输入或说出用户,那么很长的价值会令用户烦恼

选项

  • 生成加密随机数(由Int64生成的RNGCryptoServiceProvider碰撞或可预测性的可能性非常低)
  • 开始一个自动递增的列,该列以零以外的任意数字开始
  • 使用UNIQUEIDENTIFIER(或System.Guid)和base 62编码字节

答案 1 :(得分:1)

将OrderId的标识种子设置为大号。然后,当您向用户提供订单号时,您可以拥有一个前缀为订单ID的常量(就像所有订单以K开头),或者您可以生成随机字符串并将其存储在订单记录中。

答案 2 :(得分:0)

如果你关心的是他们不认为这个数字很低,我建议你以更高的数字开始身份种子。随机问题是总是存在冲突的可能性,并且随着现有订单ID数量的增加,检查重复项会变得越来越昂贵。

答案 3 :(得分:0)

将列数据类型设为UNIQUEIDENTIFIER。此数据类型将以下面提到的格式提供ID。希望这能满足需要。

B85E62C3-DC56-40C0-852A-49F759AC68FB。