我也在使用 .net 3.5 和 Entity Framework 3.5(无法升级到最新版本)。
当我使用 EF 在数据库中保存新实体时,即使状态为“未更改”且 ID > 0,所有实体引用也会重复。
下面是一小段代码:
public long Insert(CarDTO carDTO)
{
Car car = Mapper.Map<CarDTO, Car>(carDTO);
using (var context = new Entities())
{
car.Wheel =
context
.Wheels
.FirstOrDefault(item => item.ID == carDTO.Wheel.ID);
context.AddToCar(car);
context.SaveChanges();
}
}
如您所见,我只创建了一个 Car 类型的新实体,但是在执行 SaveChanges 时,它还在引用的实体 Wheel 的数据库上创建了一个新副本。
有人可以帮我理解为什么会这样吗?正如我所说,实体 Wheel 的状态为 Unchanged 并且具有 EntityID,因此它不应该在数据库上更新或复制,因为它是一个新实体。