我正准备启动我在 ASP.NET 中设计的网站。
问题是,我不希望我的客户拥有超低订单 ID(例如:#00000001)。
我将如何生成唯一(和随机)订单 ID,以便客户获得类似 K20434034 的订单号?
我正准备启动我在 ASP.NET 中设计的网站。
问题是,我不希望我的客户拥有超低订单 ID(例如:#00000001)。
我将如何生成唯一(和随机)订单 ID,以便客户获得类似 K20434034 的订单号?
业务层和数据库都有多个选项:
Int64
生成的RNGCryptoServiceProvider
具有非常低的冲突或可预测性的机会)UNIQUEIDENTIFIER
(或System.Guid
)和 base 62 编码字节将您的 OrderId 的身份种子设置为一个大数字。然后,当您向用户显示订单号时,您可以在订单 ID 前面添加一个常量(就像所有订单都以 K 开头),或者您可以生成一个随机字符串并将其存储在订单记录中。
如果您只关心他们认为数字不低,我建议您以更高的数字开始身份种子。random 的问题是总是有可能发生冲突,并且随着现有订单 ID 的数量越来越多,检查重复项的成本越来越高。
将列数据类型设为 UNIQUEIDENTIFIER 。此数据类型将为您提供下面提到的格式的 ID。希望这能满足需求。
B85E62C3-DC56-40C0-852A-49F759AC68FB。