小编pau*_*ode的帖子

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

我正在从 .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)

c# sql-server entity-framework ef-fluent-api

5
推荐指数
1
解决办法
8404
查看次数

标签 统计

c# ×1

ef-fluent-api ×1

entity-framework ×1

sql-server ×1