C# 实体类型的实例';Unidad';无法跟踪,因为另一个实例具有相同的键值EF
我来自阿根廷,对不起我的英语。由于映射原因,我将枚举更改为类,但该枚举出现此错误C# 实体类型的实例';Unidad';无法跟踪,因为另一个实例具有相同的键值EF,c#,entity-framework,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 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;
}
在我的数据库上下文中添加种子:
modelBuilder.Entity<Unidad>().HasData(UnidadEnum.CN, UnidadEnum.Unidad, UnidadEnum.Gramos);
当我想添加一个新的Comida with Alimentos witch包含相同的Unidad(gramos)时,错误显示
无法跟踪实体类型“Unidad”的实例,因为已在跟踪另一个具有{IdUnidad'}相同键值的实例。附着现有实体时,请确保仅附着一个具有给定键值的实体实例。考虑使用“dBraveTopStudioBuffel.EnabelSythViDeAtCug”来查看冲突的键值。
我不是每次添加Comida时都显式地添加Unidad的实例,因此EF每次都添加一个新的Gramos实例,而不是使用或更新同一个实例。我不知道如何修理它。或指示EF仅使用种子
[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; }
}