当我插入一个连接实体来表示与Entity Framework Core 2.0.1的多对多关系时,它会显示以下错误:
" 实体类型的实例' ReferenciaFabricanteTieneReferenciaConstructor'无法跟踪,因为另一个具有键值的实例为“IdReferenciaConstructor:-2147482610,IdReferenciaFabricante:-2147482625'已被跟踪。附加现有实体时,请确保只附加一个具有给定键值的实体实例。"。
我之前发现ID为0(不是负数),我解决了改变类的问题。模式: Entity Framework Core - Error inserting many-to-many relation
使用正确的模式,循环引用可能有问题吗?连接表生成临时ID,引用两个实体,同时引用连接实体。
类:
[Table("ReferenciasFabricante", Schema = "public")]
public class ReferenciaFabricante
{
[Key]
public int Id { get; set; }
...
//JOIN TABLE
[InverseProperty("ReferenciaFabricante")]
public IList<ReferenciaFabricanteTieneReferenciaConstructor> ReferenciaFabricanteTieneReferenciaConstructor { get; set; }
}
[Table("ReferenciasConstructor", Schema = "public")]
public class ReferenciaConstructor
{
[Key]
public int Id { get; set; }
...
//JOIN TABLE
[InverseProperty("ReferenciaConstructor")]
public IList<ReferenciaFabricanteTieneReferenciaConstructor> ReferenciaFabricanteTieneReferenciaConstructor { get; set; }
}
//JOIN TABLE
[Table("ReferenciaFabricanteTieneReferenciaConstructor", Schema = "public")]
public class ReferenciaFabricanteTieneReferenciaConstructor {
[Key]
public int IdReferenciaFabricante { get; set; }
[ForeignKey("IdReferenciaFabricante")]
public ReferenciaFabricante ReferenciaFabricante { get; set; }
[Key]
public int IdReferenciaConstructor { get; set; }
[ForeignKey("IdReferenciaConstructor")]
public ReferenciaConstructor ReferenciaConstructor { get; set; }
}
型号:
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Entity<ReferenciaFabricanteTieneReferenciaConstructor>().HasKey(v => new { v.IdReferenciaFabricante, v.IdReferenciaConstructor });
}
代码:
foreach (ApplicationCore.Entities.ReferenciaFabricanteTieneReferenciaConstructor referenciaFabricanteTieneReferenciaConstructor in referenciaConstructor.ReferenciaFabricanteTieneReferenciaConstructor) {
//ERROR
_dbContext.ReferenciaFabricanteTieneReferenciaConstructor.Add(referenciaFabricanteTieneReferenciaConstructor);
}