protected IEnumerable <LinkDescriptor> RelatedLinks(EntityDescriptor entityDescriptor) { foreach (LinkDescriptor iteratorVariable0 in this.RequestInfo.EntityTracker.Links) { if ((iteratorVariable0.Source == entityDescriptor.Entity) && (iteratorVariable0.Target != null)) { EntityDescriptor iteratorVariable1 = this.RequestInfo.EntityTracker.GetEntityDescriptor(iteratorVariable0.Target); if ((Util.IncludeLinkState(iteratorVariable1.SaveResultWasProcessed) || ((iteratorVariable1.SaveResultWasProcessed == 0) && Util.IncludeLinkState(iteratorVariable1.State))) || (((iteratorVariable1.Identity != null) && (iteratorVariable1.ChangeOrder < entityDescriptor.ChangeOrder)) && (((iteratorVariable1.SaveResultWasProcessed == 0) && (EntityStates.Added == iteratorVariable1.State)) || (EntityStates.Added == iteratorVariable1.SaveResultWasProcessed)))) { yield return(iteratorVariable0); } } } }
private void HandleResponsePost(EntityDescriptor entityDescriptor, string etag) { try { if ((EntityStates.Added != entityDescriptor.State) && (EntityStates.Added != entityDescriptor.StreamState)) { System.Data.Services.Client.Error.ThrowBatchUnexpectedContent(InternalError.EntityNotAddedState); } if (this.ProcessResponsePayload) { this.MaterializeResponse(entityDescriptor, this.CreateResponseInfo(entityDescriptor), etag); } else { entityDescriptor.ETag = etag; entityDescriptor.State = EntityStates.Unchanged; } if (entityDescriptor.StreamState != EntityStates.Added) { foreach (LinkDescriptor descriptor in this.RelatedLinks(entityDescriptor)) { if (Util.IncludeLinkState(descriptor.SaveResultWasProcessed) || (descriptor.SaveResultWasProcessed == EntityStates.Added)) { HandleResponsePost(descriptor); } } } } finally { if (entityDescriptor.StreamState == EntityStates.Added) { entityDescriptor.State = EntityStates.Modified; entityDescriptor.StreamState = EntityStates.Unchanged; } } }