private void DelayedFixup(InternalEntityEntry entry, INavigation navigation, InternalEntityEntry referencedEntry, bool fromQuery) { var navigationValue = entry[navigation]; if (navigationValue != null) { var setModified = referencedEntry.EntityState != EntityState.Unchanged; if (!navigation.IsOnDependent) { if (navigation.IsCollection) { if (entry.CollectionContains(navigation, referencedEntry)) { FixupToDependent(entry, referencedEntry, navigation.ForeignKey, setModified, fromQuery); } } else if (referencedEntry.Entity == navigationValue) { FixupToDependent(entry, referencedEntry, navigation.ForeignKey, setModified, fromQuery); } } else if (referencedEntry.Entity == navigationValue) { FixupToPrincipal(entry, referencedEntry, navigation.ForeignKey, setModified, fromQuery); } } }