EFCore 3-保存项目引发sql异常“无法更新身份列”

我正在.net Core 3.0中处理Entity Framework Core 3.0 但是当我尝试更新此项目(仅此类,在db first模型中)时,它给了我这个错误

Sql异常。无法更新标识列“ IDNRR”

我只是从X表中获取一个项目,然后使用context.Update命令保存它

单元测试异常

var c = _dbContext.TblWoTaskExtServices.SingleOrDefault(x => x.Idnrr == 15273778);
_dbContext.Update(c);
_dbContext.SaveChanges(); -> execute this give me the sql exception

EFCore 3-保存项目引发sql异常“无法更新身份列”

类定义

modelBuilder.Entity<TblWoTaskExtServices>(entity =>
{
    entity.HasKey(e => new { e.ExternalServiceCode,e.IdWotask });

    entity.ToTable("tbl_WO_TASK_EXT_SERVICES");

    entity.HasIndex(e => e.Idnrr)
        .Hasname("IX_tbl_WO_TASK_EXT_SERVICES")
        .IsUnique();

    entity.Property(e => e.ExternalServiceCode)
        .HasMaxLength(255)
        .IsUnicode(false);

    entity.Property(e => e.IdWotask).HasColumnName("IdWOTask");

    entity.Property(e => e.DateIns).HasColumnType("smalldatetime");

    entity.Property(e => e.DateMod).HasColumnType("smalldatetime");

    entity.Property(e => e.ExternalServiceDescription).HasColumnType("text");

    entity.Property(e => e.Idnrr)
        .HasColumnName("IDNRR")
        .ValueGeneratedOnAdd();

    entity.Property(e => e.Notes).HasColumnType("text");

    entity.Property(e => e.TotalCost).HasColumnType("decimal(18,2)");

    entity.Property(e => e.TotalCostFinal).HasColumnType("decimal(18,2)");

    entity.HasOne(d => d.IdCompanyNavigation)
        .WithMany(p => p.TblWoTaskExtServices)
        .HasPrincipalKey(p => p.Idnrr)
        .HasForeignKey(d => d.IdCompany)
        .OnDelete(DeleteBehavior.ClientSetNull)
        .HasConstraintName("FK_tbl_WO_TASK_EXT_SERVICES_tbl_COMPANIES");

    entity.HasOne(d => d.IdCostClassnavigation)
        .WithMany(p => p.TblWoTaskExtServices)
        .HasPrincipalKey(p => p.Idnrr)
        .HasForeignKey(d => d.IdCostClass)
        .HasConstraintName("FK_tbl_WO_TASK_EXT_SERVICES_tbl_COST_CLASSES");

    entity.HasOne(d => d.IdCurrencyNavigation)
        .WithMany(p => p.TblWoTaskExtServices)
        .HasPrincipalKey(p => p.Idnrr)
        .HasForeignKey(d => d.IdCurrency)
        .HasConstraintName("FK_tbl_WO_TASK_EXT_SERVICES_tbl_Currencies");
    });
}
leohejinling 回答:EFCore 3-保存项目引发sql异常“无法更新身份列”

已解决,无需使用Update()方法

如@metacube建议

此外,您尚未更改返回的实体,但对其使用了DbContext.Update,它将实体状态更改为“已修改”。我建议简单地更改所需的跟踪实体的属性,然后调用SaveChanges

本文链接:https://www.f2er.com/2697580.html

大家都在问