gpt4 book ai didi

c# - 数据库表中每条记录的唯一字符串

转载 作者:太空狗 更新时间:2023-10-29 19:58:02 25 4
gpt4 key购买 nike

在我的 Asp.Net MVC 5 项目中,我首先使用实体​​框架代码来处理 MS SQL 数据库。假设这是表格:

public class Ticket
{
[Key]
public int Id { get; set; }

[Required]
public string ReferenceCode { get; set; }

//Rest of the table
}

在这个表中,每当我添加新代码时,我都希望 ReferenceCode 列是一个唯一和随机的 AlphaNumeric(仅包含字母和数字)字符串,具有特定的长度。例如,这将允许用户引用特定的工单。

这些是一些 10 个字符长度的示例:TK254X26W1W2S564Z1111STT135PA5...

现在,我能够生成具有给定长度的随机字符串。但是,我不确定如何保证它们的唯一性。我这样做:

db.Tickets.Add(new Ticket()
{
ReferenceCode = GenerateRandomCode(10),
//...
});

确切地说,我希望 GenerateRandomCode 函数或其他方法能够确保生成的字符串未用于其他记录。

我可以使用 for 循环来检查每个生成的代码,但我认为这不是个好主意。尤其是一段时间后,表中将有数千条记录。

最佳答案

您可以使用 Guid为了生成唯一的(但在安全方面不是随机的) key 。

this SO question 中提取:

Guid g = Guid.NewGuid();
string GuidString = Convert.ToBase64String(g.ToByteArray());
GuidString = GuidString.Replace("=","");
GuidString = GuidString.Replace("+","");
GuidString = GuidString.ToUpper();

将生成一个唯一的 key 以满足您的 ReferenceCode 属性需要但更长(22 个字符)。折叠它并使用 X 字符将不再保证其唯一性。

OZVV5TPP4U6XJTHACORZEQ

关于c# - 数据库表中每条记录的唯一字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42638083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com