我来自阿根廷,对不起我的英语。我的枚举出现此错误,出于映射原因我将其更改为类。
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仅使用种子。