示例#1
0
        protected ODataRequestMessageWrapper CreateRequest(EntityDescriptor entityDescriptor)
        {
            EntityStates               state          = entityDescriptor.State;
            Uri                        resourceUri    = entityDescriptor.GetResourceUri(this.RequestInfo.BaseUriResolver, false);
            ClientEdmModel             model          = ClientEdmModel.GetModel(this.RequestInfo.MaxProtocolVersion);
            Version                    requestVersion = DetermineRequestVersion(model.GetClientTypeAnnotation(model.GetOrCreateEdmType(entityDescriptor.Entity.GetType())), state);
            string                     httpMethod     = this.GetHttpMethod(state, ref requestVersion);
            ODataRequestMessageWrapper requestMessage = this.CreateRequestMessage(resourceUri, httpMethod);

            if (this.IsBatch)
            {
                requestMessage.SetHeader("Content-ID", entityDescriptor.ChangeOrder.ToString(CultureInfo.InvariantCulture));
            }
            if (EntityStates.Deleted != entityDescriptor.State)
            {
                requestMessage.SetHeader("Content-Type", "application/atom+xml");
            }
            if ((EntityStates.Deleted == state) || (EntityStates.Modified == state))
            {
                string latestETag = entityDescriptor.GetLatestETag();
                if (latestETag != null)
                {
                    requestMessage.SetHeader("If-Match", latestETag);
                    if (!this.IsBatch)
                    {
                        requestMessage.AddHeadersToReset("If-Match");
                    }
                }
            }
            ApplyPreferences(requestMessage, httpMethod, this.RequestInfo.AddAndUpdateResponsePreference, ref requestVersion);
            WebUtil.SetOperationVersionHeaders(requestMessage, requestVersion, this.RequestInfo.MaxProtocolVersionAsVersion);
            return(requestMessage);
        }
示例#2
0
 private void MaterializeResponse(EntityDescriptor entityDescriptor, ResponseInfo responseInfo, string etag)
 {
     using (MaterializeAtom atom = this.GetMaterializer(entityDescriptor, responseInfo))
     {
         atom.SetInsertingObject(entityDescriptor.Entity);
         object obj2 = null;
         foreach (object obj3 in atom)
         {
             if (obj2 != null)
             {
                 System.Data.Services.Client.Error.ThrowInternalError(InternalError.MaterializerReturningMoreThanOneEntity);
             }
             obj2 = obj3;
         }
         if (entityDescriptor.GetLatestETag() == null)
         {
             entityDescriptor.ETag = etag;
         }
     }
 }
示例#3
0
 private void MaterializeResponse(EntityDescriptor entityDescriptor, ResponseInfo responseInfo, string etag)
 {
     using (MaterializeAtom atom = this.GetMaterializer(entityDescriptor, responseInfo))
     {
         atom.SetInsertingObject(entityDescriptor.Entity);
         object obj2 = null;
         foreach (object obj3 in atom)
         {
             if (obj2 != null)
             {
                 System.Data.Services.Client.Error.ThrowInternalError(InternalError.MaterializerReturningMoreThanOneEntity);
             }
             obj2 = obj3;
         }
         if (entityDescriptor.GetLatestETag() == null)
         {
             entityDescriptor.ETag = etag;
         }
     }
 }
示例#4
0
 protected ODataRequestMessageWrapper CreateRequest(EntityDescriptor entityDescriptor)
 {
     EntityStates state = entityDescriptor.State;
     Uri resourceUri = entityDescriptor.GetResourceUri(this.RequestInfo.BaseUriResolver, false);
     ClientEdmModel model = ClientEdmModel.GetModel(this.RequestInfo.MaxProtocolVersion);
     Version requestVersion = DetermineRequestVersion(model.GetClientTypeAnnotation(model.GetOrCreateEdmType(entityDescriptor.Entity.GetType())), state);
     string httpMethod = this.GetHttpMethod(state, ref requestVersion);
     ODataRequestMessageWrapper requestMessage = this.CreateRequestMessage(resourceUri, httpMethod);
     if (this.IsBatch)
     {
         requestMessage.SetHeader("Content-ID", entityDescriptor.ChangeOrder.ToString(CultureInfo.InvariantCulture));
     }
     if (EntityStates.Deleted != entityDescriptor.State)
     {
         requestMessage.SetHeader("Content-Type", "application/atom+xml");
     }
     if ((EntityStates.Deleted == state) || (EntityStates.Modified == state))
     {
         string latestETag = entityDescriptor.GetLatestETag();
         if (latestETag != null)
         {
             requestMessage.SetHeader("If-Match", latestETag);
             if (!this.IsBatch)
             {
                 requestMessage.AddHeadersToReset("If-Match");
             }
         }
     }
     ApplyPreferences(requestMessage, httpMethod, this.RequestInfo.AddAndUpdateResponsePreference, ref requestVersion);
     WebUtil.SetOperationVersionHeaders(requestMessage, requestVersion, this.RequestInfo.MaxProtocolVersionAsVersion);
     return requestMessage;
 }