无法跟踪实体类型“ Unidad”的实例,因为另一个具有相同键值EF的实例

时间:2020-09-02 18:52:00

标签: c# entity-framework

我来自阿根廷,对不起我的英语。我的枚举出现此错误,出于映射原因我将其更改为类。

public enum UnidadEnum{
  Gramos,
  Unidad,
  CN
}

这是要映射的类:

public class Unidad
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int IdUnidad{ get; set; }

    [Required, MaxLength(100)]
    public string nombre { get; set; }

    private Unidad(UnidadEnum @elem)
    {
        IdUnidad = (int)@elem;
        nombre = @elem.ToString();
    }

    protected Unidad() { }

    public static implicit operator Unidad(UnidadEnum @enum) => new Unidad(@enum);

    public static implicit operator UnidadEnum(Unidad u) => (UnidadEnum)u.IdUnidad;
    }

在我的dbContext中种子:

modelBuilder.Entity<Unidad>().HasData(UnidadEnum.CN, UnidadEnum.Unidad, UnidadEnum.Gramos);

在我的Alimento课堂中对Unidad的引用:

 [Table("Alimento")]
 public class Alimento
  { 
    public int AlimentoId;

   [Column("nombre", TypeName="nvarchar(100")]
   public String nombre { get; set; }
   public virtual Unidad Unidad { get; set; }
   public int IdUnidad { get; set; }
}

当我想用Alimentos女巫添加一个新的Comida时,该女巫包含相同的Unidad(语法),错误提示

无法跟踪实体类型'Unidad'的实例,因为已经跟踪了{'IdUnidad'}具有相同键值的另一个实例。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。考虑使用'DbContextOptionsBuilder.EnableSensitiveDataLogging'查看冲突的键值。

我每次要添加Comida时都没有明确添加Unidad的实例,因此EF每次都添加了Gramos的新实例,并且没有使用或更新相同的实例。我不知道如何解决它。或指示EF仅使用种子。

0 个答案:

没有答案