在数据库之外生成非向导唯一键
本文关键字:向导 唯一 一键 数据库 | 更新日期: 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命令行,因为它更可靠。