[英].NET Core 3.1 ChangePasswordAsync Inner Exception "Cannot update Identity column"
[英]EFCore 3 - Saving Item throw sql exception 'cannot update identity column'
我正在 .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
类定义
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");
});
}
不使用 Update() 方法解决
正如@metacube 建议的那样
此外,您没有更改返回的实体,而是对其使用了 DbContext.Update,这将实体状态更改为“已修改”。 我建议简单地更改被跟踪实体的所需属性,然后调用 SaveChanges
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.