private void ObjectSpace_ObjectGetting(object sender, ObjectGettingEventArgs e) { if (e.SourceObject != null && objectMap.IsKnown(e.SourceObject.GetType())) { var link = (IObjectSpaceLink)e.SourceObject; if (objectSpace.Equals(link.ObjectSpace) && (objectMap.Contains(e.SourceObject) || IsNewObject(e.SourceObject))) { e.TargetObject = e.SourceObject; } else { var key = objectSpace.GetKeyValue(e.SourceObject); e.TargetObject = objectSpace.GetObjectByKey(e.SourceObject.GetType(), key); } } }