.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 を持っているため、新しいエンティティであるため、データベース上で更新したり複製したりしないでください。