gpt4 book ai didi

c# - EF Core - 唯一的、索引的、自动生成的非主键的 guid 列

转载 作者:太空宇宙 更新时间:2023-11-03 12:21:09 25 4
gpt4 key购买 nike

我正在从 .NET EF 迁移到 EF CORE。我有一个有效的解决方案,除了它的主键之外,它会自动生成一个唯一的 GUID。下面是解决方案。

    [Key, Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Index(IsUnique = true)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid TenantId { get; set; }

但是,当我尝试迁移到 EF Core 时,我在插入数据时收到一条错误消息:>SqlException:无法将值 NULL 插入列“TenantId”,表“DBContext.dbo.Tenants”;列不允许空值。插入失败。声明已终止。

这是我的新代码:

    [Key, Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public Guid TenantId { get; set; }

流利:

    base.OnModelCreating(builder);
builder.Entity<Tenant>()
.HasIndex(t => t.TenantId)
.IsUnique();
builder.Entity<Tenant>()
.Property(t => t.TenantId)
.ValueGeneratedOnAdd();

这是通过使用插入的:

         _context.Tenants.Add(tenant);
await _context.SaveChangesAsync();

这是否不受 EF Core 支持并且需要解决方法?

最佳答案

在您的新代码中,您没有 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 注释。您的代码应该是:

[Key, Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid TenantId { get; set; }

关于c# - EF Core - 唯一的、索引的、自动生成的非主键的 guid 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47152056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com