我的项目中有Expedition实体。
[Table("Expeditions")]
public class Expedition
{
public int Id { get; set; }
public Bus Bus { get; set; }
[ForeignKey("Bus")]
public int BusId { get; set; }
}
并且Expedition实体具有外键。来自公交车实体的外键。
我使用前端的信息创建一个EpeditionDTO。尝试将ExpeditionDTO转换为Expedition并将其添加到数据库中。
public void Add(ExpeditionDTO item)
{
try
{
Bus Bus = _mapper.Map<Bus>(item.Bus);
var expedition = new Expedition()
{
Id = item.Id,
Bus = Bus,
BusId = Bus.Id
};
_expeditionRepository.Add(expedition);
_unitOfWork.Save();
}
catch(Exception ex)
{
throw ex;
}
}
还有我的Add方法:
public virtual void Add(T Entity)
{
_context.Add<T>(Entity);
}
当我尝试此操作时,出现此错误。
无法跟踪实体类型“ Bus”的实例,因为已经跟踪了另一个具有相同“ {'Id”}键值的实例。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。考虑使用“ DbContextOptionsBuilder.EnableSensitiveDataLogging”来查看冲突的键值。
我该如何解决这个问题。
答案 0 :(得分:0)
ou应该仅通过BusId
var expedition = new Expedition()
{
Id = item.Id,
BusId = Bus.Id
};