我正在从 .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; }
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试迁移到 EF Core 时,插入数据时收到错误消息: >SqlException: Cannot insert the value NULL into columns 'TenantId', table 'DBContext.dbo.Tenants'; 列不允许为空。插入失败。该语句已终止。
这是我的新代码:
[Key, Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public Guid TenantId { get; set; }
Run Code Online (Sandbox Code Playgroud)
流利:
base.OnModelCreating(builder);
builder.Entity<Tenant>()
.HasIndex(t => t.TenantId)
.IsUnique();
builder.Entity<Tenant>()
.Property(t => t.TenantId)
.ValueGeneratedOnAdd();
Run Code Online (Sandbox Code Playgroud)
这是通过使用以下方式插入的:
_context.Tenants.Add(tenant); …Run Code Online (Sandbox Code Playgroud)