-2

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

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

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

4

4 回答 4

1

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

考虑

  • 随机数有可能发生冲突
  • 最好不要公开内部 ID,尤其是顺序 ID
  • 如果用户不得不输入或说出长值,他们会很烦

选项

  • 生成一个密码随机数(Int64生成的RNGCryptoServiceProvider具有非常低的冲突或可预测性的机会)
  • 开始一个自动递增的列,该列从零以外的任意数字开始
  • 使用UNIQUEIDENTIFIER(或System.Guid)和 base 62 编码字节
于 2012-05-22T23:52:59.990 回答
1

将您的 OrderId 的身份种子设置为一个大数字。然后,当您向用户显示订单号时,您可以在订单 ID 前面添加一个常量(就像所有订单都以 K 开头),或者您可以生成一个随机字符串并将其存储在订单记录中。

于 2012-05-22T23:56:01.563 回答
0

如果您只关心他们认为数字不低,我建议您以更高的数字开始身份种子。random 的问题是总是有可能发生冲突,并且随着现有订单 ID 的数量越来越多,检查重复项的成本越来越高。

于 2012-05-22T23:52:51.307 回答
0

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

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

于 2012-05-23T05:24:12.253 回答