Asp.net web api 重复id生成

Asp.net web api 重复id生成,asp.net-web-api,azure-cosmosdb,guid,Asp.net Web Api,Azure Cosmosdb,Guid,我正在使用asp.net核心web api和cosmos db创建一个项目。我生成id作为GUID值,我自动生成id。但它会创建重复的值 work.cs文件: public class work { [JsonProperty("id")] public Guid Id { get; set; } [JsonProperty("name")] public string name

我正在使用asp.net核心web api和cosmos db创建一个项目。我生成id作为GUID值,我自动生成id。但它会创建重复的值

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;
                }
            }
        }
输出:



>  {
>     "id": "00000000-0000-0000-0000-000000000000",
>     "Name": "string",
>     "industy": {
>       "id": "00000000-0000-0000-0000-000000000000",
>       "IdustryId": 0,
                 }
>  }   


如果我输入多个没有id的值,它会显示错误,id已经存在。请帮助我修复它。

在两种型号中都将
公共Guid Id{get;set;}
标记为可为空:

公共Guid?Id{get;set;}


Guid是一种结构和值类型。这意味着您必须与它的默认值进行比较,而不是空值,或者将其标记为可空值。

@mexanich有很好的解决方案。你仍然可以尝试更多的方法。如果您不想将属性更改为
nullable
,请更新如下条件。另外,不需要
else
块。你可以消除它

if (Id == default(Guid))
{
    Id = Guid.NewGuid();
}

编译器应该给您一个警告,与null进行比较永远不会是真的
if (Id == default(Guid))
{
    Id = Guid.NewGuid();
}