Entity Framework Pitfalls: Attaching New Entities With Existing Related Ones
One of the patterns in EF 6.x for attaching new entities to a context is to simply change it’s state to Added:
ctx.Entry(myEntity).State = EntityState.Added;
Entity Framework 6.x will traverse the entity graph of all the related entities and set all their states to Added too. This might be a problem.
Imagine we want to attach a disconnected (new) entity that is linked to an existing one, for which we already have a reference. In this case, we don’t want this reference to be added, because doing so will raise a violation on the database and it will come out as an exception.
What we need to do is to explicitly set the state of any of these existing instances to Unchanged. Fortunately, Entity Framework Core will solve this with the introduction of a new TrackGraph API.
Thanks for Tony Sneed (@tonysneed) for reminding me.