Guid冲突C#
最近,我们在现金支付流程中实施了Guid。在短短的十天内,我们至少收到了十几起关于Guid碰撞的案例。 请说明为什么不同位置的不同终端生成相同的guid,以及如何避免guid冲突 请在下面找到正在生成Guid的类Guid冲突C#,c#,guid,C#,Guid,最近,我们在现金支付流程中实施了Guid。在短短的十天内,我们至少收到了十几起关于Guid碰撞的案例。 请说明为什么不同位置的不同终端生成相同的guid,以及如何避免guid冲突 请在下面找到正在生成Guid的类 public class Cash { public Cash() { Id = Guid.NewGuid(); } public Guid Id { get; set; } } 不确定这是否是真正的问题,但这与我
public class Cash
{
public Cash()
{
Id = Guid.NewGuid();
}
public Guid Id { get; set; }
}
不确定这是否是真正的问题,但这与我一直在准备的我们公司内部的一次技术会谈相吻合。这是您的代码:
public class Cash
{
public Cash()
{
Id = Guid.NewGuid();
}
public Guid Id { get; set; }
}
。。。这个类有一个基本问题:它没有封装。简而言之,“Id”属性有一个公共setter,这意味着任何使用“Cash”类实例的代码都可以操作其Id属性
因此,我的猜测是以下两种情况之一:
public Guid Id { get; private set; }
。。。或者
private Guid id;
public Id { get { return this.id } }
无论如何,正如一些人所发布的,生成完全重复的GUID几乎是不可能的。因此,我怀疑我上面发布的内容是导致问题的真正原因。这些副本来自位于不同位置的不同终端/设备。每个设备都在完全隔离的状态下生成Guid。@是否确认重复的Guid来自不同的终端?或者你只是在假设?@Akhter然后你有一些其他代码分配了错误的值,可能将相同的值设置到多个对象。与其在一个明显安全的函数中寻找重影,不如发布代码的其余部分。如果要使用EntityFramework,您需要一个Id的公共设置器。@JoePhillips我们确认这些guid来自位于不同位置的不同终端