在数据库之外生成非向导唯一键

本文关键字:向导 唯一 一键 数据库 | 更新日期: 2023-09-27 18:09:15

我有一种情况,我需要在"实体"之间创建某种唯一性,但它不是GUID,并且它没有保存在数据库中(但是它被保存了)。只是没有数据库)。

键的基本用途仅仅是冗余检查。它不必像真正的"主键"那样具有可伸缩性,但用我能想到的最简单的术语来说,这就是它的工作原理。

[receiver]List<possibilities>

possibilities独立存在,但许多将具有相同的值(无法预测)。这是故意的)

通常,possibilities接收器列表必须清空,然后重新填充(这是业务需求)。

键基本上用于添加非常轻量级的冗余检查。换句话说,有时相同的可能性会重复出现,有时它只应该出现在收件人列表中一次。

我基本上想用一些非常轻和简单的东西。一个字符串就足够了。我只是想找出一个简单的算法来完成这个。我想过使用GetHashCode()方法,但我不确定这有多可靠。能给我一些建议吗?

在数据库之外生成非向导唯一键

如果您第一眼就可以使用GetHashCode(),那么您也可以使用MD5哈希,从而获得更少的碰撞概率。生成的MD5可以通过将其编码为base 64来存储为一个24字符的字符串,让我们看看这个例子:

    public static class MD5Gen
    {
        static MD5 hash = MD5.Create();
        public static string Encode(string toEncode)
        { 
            return Convert.ToBase64String(
            hash.ComputeHash(Encoding.UTF8.GetBytes(toEncode)));
        }
    }

用这个你也可以用字符串格式的md5哈希编码源字符串。你只需要用字符串的形式来写"可能性"类

试试生成Guid。

VBScript函数生成UUID/GUID

如果你在Windows上,你可以使用下面简单的VBScript来生成一个UUID。只需将代码保存到一个名为createguid的文件中。然后执行cscript createguid命令。VBS

Set TypeLib = CreateObject("Scriptlet.TypeLib")
NewGUID = TypeLib.Guid
WScript.Echo(left(NewGUID, len(NewGUID)-2))
Set TypeLib = Nothing

通过Windows命令行创建UUID/GUID

If you have the Microsoft SDK installed on your system, you can use the utility uuidgen.exe, which is located in the "C:'Program Files'Microsoft SDK'Bin" directory

或尝试相同的更多信息。

链接

我建议使用Windows命令行,因为它更可靠。