问题描述
我试图在称为NsTravelDistance的表中插入一条记录,但是在dbcontext.savechanges()上,另一个表引发了异常,我无法弄清楚为什么以及如何解决它。
我正在使用EF核心动力工具对现有数据库中的代码优先模型进行逆向工程。
引发异常的代码:
_dbContext.Set<NsTravelDistance>().Add(new NsTravelDistance()
{
Origin = postalCodeOrigin.Substring(0,4),Destination = postalCodeDestination.Substring(0,Duration = travelInformation.Duration,Distance = travelInformation.Kilometers
});
_dbContext.SaveChanges();
我得到的异常:“实体类型'NsEmployeeGroupSettings'的属性'GroupId'是键的一部分,因此无法修改或标记为已修改。要更改 具有标识外键的现有实体,首先删除依赖项,然后调用“ SaveChanges”,然后将依赖项与新的主体相关联。“
因为该异常不是由于NsTravelDistance实体引起的,所以我认为数据库上下文有问题,但是我无法弄清楚是什么。
为NsEmployeeGroupSettings实体生成的代码:
modelBuilder.Entity<NsEmployeeGroupSettings>(entity =>
{
entity.HasKey(e => e.GroupId)
.HasName("PK___nsEmplo__149AF30AD10600C6");
entity.ToTable("_nsEmployeeGroupSettings");
entity.Property(e => e.GroupId)
.HasColumnName("GroupID")
.ValueGeneratedNever();
entity.HasOne(d => d.Group)
.WithOne(p => p.NsEmployeeGroupSettings)
.HasForeignKey<NsEmployeeGroupSettings>(d => d.GroupId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK___nsEmploy__Group__371C33B8");
});
以及为NsTravelDistance实体生成的代码:
modelBuilder.Entity<NsTravelDistance>(entity =>
{
entity.HasKey(e => new { e.Origin,e.Destination });
entity.ToTable("_nsTravelDistance");
entity.Property(e => e.Origin)
.HasMaxLength(6)
.IsUnicode(false);
entity.Property(e => e.Destination)
.HasMaxLength(6)
.IsUnicode(false);
});
关于整个问题的最奇怪的部分是,它一直起作用,直到我再次生成dbcontext来包含一些新表和数据库中的更改为止,这些更改都与这两个实体都不相关。
任何帮助将不胜感激!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)