如何在.NET CORE 6中自动生成Guid ID?

问题描述 投票:0回答:2

在我的请求数据中,如果我有重复的Guid ID,我想自动生成一个新的Guid ID。怎么办?

public class Roster { public Guid Id {get; set;} }

这里

Guid Id
是主键。

当我发出 api post 请求时,我为 Guid Id 提供的值是多少?

.net-6.0 guid
2个回答
2
投票

如果您使用 SQL 和 EntityFramework Core,您可以在模型中使用它:

 [Key]
 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 public Guid ActivityId { get; set; }

这会告诉 EF:

  • 此属性是表的
    PRIMARY KEY
    ,因此是
    [KEY]
  • 这个属性应该由数据库自动生成

仅供参考,您需要为 SQL 列设置一个

DEFAULT
值,如下所示:

  • (newsequentiaid())
    告诉 SQL,每次向该表添加记录时,他负责创建一个全局唯一 ID

无论如何,不知道这是否是您正在寻找的答案(下次为我们提供更多信息) 希望这对你有帮助干杯!

更新

我不知道我的解决方案是否适用于 MySQL,我将它用于 SQL。在网上搜索了一下,我发现 MySQL 数据库中没有

newsequentialid
的资源(但我可能是错的,如果你愿意,可以自己研究一下)。

无论如何,我只是不设置它:

 var activityDB = await context.Activity.FirstOrDefaultAsync(c => c.ActivityId == activity.ActivityId);
  if (activityDB == null)
  {
     activityDB = new Activity();
     context.Activity.Add(activityDB);
  }
     activityDB.Code = activity.Code;
     activityDB.Description = activity.Description;
     activityDB.Status = activity.Status;

这就是代码的作用

  • 检查我的 id 是否存在,如果是,我必须编辑,如果为空,我不存在
  • 创建新活动并编辑
  • EF 现在会自动处理要处理的 id,因此无需设置它
  • 如果有,则意味着我正在编辑该 ID,如果没有,则会自动创建它

0
投票
This works for me

My model
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public T Id { get; set; }

And added the below code in the Context class
modelBuilder.Entity<MyEntity>().Property(e => e.Id).HasDefaultValueSql("NEWID()");

ef: Add-migration "UniqueIdGeneration"
ef: update-database
© www.soinside.com 2019 - 2024. All rights reserved.