在我的请求数据中,如果我有重复的Guid ID,我想自动生成一个新的Guid ID。怎么办?
public class Roster { public Guid Id {get; set;} }
这里
Guid Id
是主键。
当我发出 api post 请求时,我为 Guid Id 提供的值是多少?
如果您使用 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;
这就是代码的作用
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