在库存系统中生成物料的ID

问题描述 投票:0回答:1

因此,我正在将清单系统作为学校项目,并且我想为这些项目生成唯一ID,以便它将成为该特定项目的标识符。

是否有可能生成基于某些字段的ID,例如商品名称,价格,有效期。

是否可以使用一些现有的库?

c#
1个回答
2
投票

是否有可能生成基于某些字段的ID,例如商品名称,价格,有效期。

是:哈希。

例如:

// It's very important to use `InvariantCulture ` and "o" to ensure consistent formatting on all computers
String infoText = item.Name + item.Price.ToString( "C2", CultureInfo.InvariantCulture ) + item.Expiration.ToString("o");
Byte[] infoBytes = Encoding.UTF8.GetBytes( infoText );

using( SHA256 sha = new SHA256Cng() )
{
    Byte[] hash = sha.ComputeHash( infoBytes );
    String hashText = Convert.ToBase64String( hash );
    Console.WriteLine( "{0} = {1}", infoText, hashText )
}

散列(也称为“摘要”)对于相同的输入将始终是相同的,对于不同的输入将是不同的。

因此,如果您有一个包含价值10美元的苹果的SKU,该苹果将于2019-10-09到期,并且将其输入上述代码,那么它将生成一个唯一的代码,您可以使用该代码,而无需存储它们之间的映射SKU和该唯一代码(也称为“基于内容的寻址”)。

...因此,如果您遇到另外价值$ 10的苹果,这些苹果也将在2019-10-09到期,那么它将具有相同的唯一代码,即使它是一个不同的对象,并且您也不必记住您之前生成的唯一代码。

但是如果您遇到价值$ 10的梨在2019-10-09到期,或者价值$ 20的苹果在同一天也到期,则代码将不同。

© www.soinside.com 2019 - 2024. All rights reserved.