重复的 id 生成
Duplicate id generate
我正在使用 asp.net 核心网络 api 和 cosmos 数据库创建一个项目。我生成 id 作为 GUID 值,我自动生成 id.But 它创建重复值。
work.cs 文件:
public class work
{
[JsonProperty("id")]
public Guid Id { get; set; }
[JsonProperty("name")]
public string name { get; set; }
public List<Industy> Industy { get; set; }
public work()
{
if (Id == null)
{
Id = Guid.NewGuid();
}
else
{
Id = Id;
}
}
}
Industry.cs 文件:
public class Industy
{
[JsonProperty("Id")]
public Guid Id { get; set; }
[JsonProperty("IdustryId")]
public int IdustryId { get; set; }
[JsonProperty("IdustryName")]
public string IdustryName { get; set; }
public Industy()
{
if (Id == null)
{
Id = Guid.NewGuid();
}
else
{
Id = Id;
}
}
}
输出:
> {
> "id": "00000000-0000-0000-0000-000000000000",
> "Name": "string",
> "industy": {
> "id": "00000000-0000-0000-0000-000000000000",
> "IdustryId": 0,
}
> }
如果我输入多个没有 id 的值,它会显示错误,id 已经存在。请帮我解决一下。
在两个模型中将 public Guid Id { get; set; }
标记为可为空:
public Guid? Id { get; set; }
Guid 是结构和值类型。这意味着您必须与其默认值而不是 null 进行比较或将其标记为可为空。
@mexanich 有很好的解决方案。您仍然可以尝试另一种方法。如果您不想将 属性 更改为 nullable
,请按如下方式更新条件。也不需要 else
块。你可以消除它。
if (Id == default(Guid))
{
Id = Guid.NewGuid();
}
我正在使用 asp.net 核心网络 api 和 cosmos 数据库创建一个项目。我生成 id 作为 GUID 值,我自动生成 id.But 它创建重复值。
work.cs 文件:
public class work
{
[JsonProperty("id")]
public Guid Id { get; set; }
[JsonProperty("name")]
public string name { get; set; }
public List<Industy> Industy { get; set; }
public work()
{
if (Id == null)
{
Id = Guid.NewGuid();
}
else
{
Id = Id;
}
}
}
Industry.cs 文件:
public class Industy
{
[JsonProperty("Id")]
public Guid Id { get; set; }
[JsonProperty("IdustryId")]
public int IdustryId { get; set; }
[JsonProperty("IdustryName")]
public string IdustryName { get; set; }
public Industy()
{
if (Id == null)
{
Id = Guid.NewGuid();
}
else
{
Id = Id;
}
}
}
输出:
> {
> "id": "00000000-0000-0000-0000-000000000000",
> "Name": "string",
> "industy": {
> "id": "00000000-0000-0000-0000-000000000000",
> "IdustryId": 0,
}
> }
如果我输入多个没有 id 的值,它会显示错误,id 已经存在。请帮我解决一下。
在两个模型中将 public Guid Id { get; set; }
标记为可为空:
public Guid? Id { get; set; }
Guid 是结构和值类型。这意味着您必须与其默认值而不是 null 进行比较或将其标记为可为空。
@mexanich 有很好的解决方案。您仍然可以尝试另一种方法。如果您不想将 属性 更改为 nullable
,请按如下方式更新条件。也不需要 else
块。你可以消除它。
if (Id == default(Guid))
{
Id = Guid.NewGuid();
}