0

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

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

哈希是字母数字字符。

4

4 回答 4

13

使用Guid.NewGuid方法。

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

全球唯一标识符 - WIKI

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

于 2013-05-02T12:36:19.013 回答
2

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

于 2013-05-08T04:10:27.163 回答
1

在这里做一些假设,但您可以只生成一个 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);
于 2013-05-02T12:36:52.503 回答
-2

做这样的事情来创建它:

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 相同

于 2013-05-02T12:40:12.277 回答