创建我自己的唯一ID

本文关键字:ID 唯一 自己的 我自己 创建 | 更新日期: 2023-09-27 18:12:02

我正试图在c#中为我的NoSQL数据库中的每个文档创建一个自己唯一的ID,但我不太确定我会怎么做?

我的示例UID看起来像这样######.entityType@######.contextName.worldName

哈希是字母数字字符。

创建我自己的唯一ID

使用Guid。NewGuid方法。

Guid guid = Guid.NewGuid();
string uniqueID = guid.ToString();

全局唯一标识符- WIKI

全局唯一标识符是一个唯一的参考编号用作计算机软件中的标识符。术语GUID通常指的是到通用唯一标识符(UUID)的各种实现标准。

SnowMaker库擅长在特定唯一性范围内为您提供唯一标识符。

这里做一些假设,但是您可以只生成一个GUID,用连字符分隔GUID,在您的用户名中使用GUID的部分。

使用字符串构建器将它们全部连接起来。

下面是一些示例代码来给出这个想法(未经测试):

    Guid g = Guid.NewGuid();
    String[] parts = g.ToString().Split('-');
    StringBuilder sb = new StringBuilder();
    sb.Append(parts[0]);
    sb.Append("entityType@");
    sb.Append(parts[1]);
    sb.Append(".contextName.worldName");
    string ID = sb.ToString();

这不会是全局唯一的,但应该为您的场景提供相当好的唯一性范围。

要匹配上面的哈希长度,可以这样做:

        String gString = Guid.NewGuid().ToString().Replace("-","");
        StringBuilder sb = new StringBuilder();
        sb.Append(gString.Substring(0,6));
        sb.Append("entityType@");
        sb.Append(gString.Substring(6,6));
        sb.Append(".contextName.worldName");
        string ID = sb.ToString();
        MessageBox.Show(ID);

创建它:

string characters = "abcdefghi123456";
string result = "";
Random random = new Random();
for(int i = 0; i < 10; i++)
{
     result += characters[random.Next(0, characters.Length - 1)];
}

不能保证它是唯一的,所以你必须在尝试插入它之前检查数据库中存储的记录,如果这是你打算做的,并且小心使用大写和小写,因为这些可能在数据库中被视为相同,例如Abc可能与Abc

相同