示例#1
0
        public void Update(string entitySetName, CdsEntity record)
        {
            var response = _client.PatchAsync($"{entitySetName}({record.Id})", new StringContent(record.ToJson(),
                                                                                                 Encoding.UTF8, "application/json"));

            HandleError(response);
        }
示例#2
0
        public Guid Create(string entitySetName, CdsEntity record)
        {
            var response = _client.PostAsync($"{entitySetName}", new StringContent(record.ToJson(),
                                                                                   Encoding.UTF8, "application/json"));

            HandleError(response);

            var value = response.Result.Headers.GetValues("OData-EntityId").First();

            return(Guid.Parse(Regex.Matches(value, $"{response.Result.RequestMessage.RequestUri.AbsoluteUri}\\(([^\\)]+)").First().Groups.Last().Value));
        }
示例#3
0
        private CdsEntity BuildEntity(JObject rawRecord, HashSet <string> unusedFields = null, Guid?recordId = null)
        {
            var record = new CdsEntity();

            if (recordId.HasValue)
            {
                record.Id = recordId.Value;
            }

            foreach (var property in rawRecord.Properties())
            {
                if (property.Name.StartsWith("@odata.", StringComparison.InvariantCultureIgnoreCase))
                {
                    continue;
                }
                else if (property.Value is JObject)
                {
                    record.Attributes.Add(property.Name.ToLower(), BuildEntity((JObject)property.Value));
                    continue;
                }

                var value = property.Value.ToObject <object>();
                record.Attributes.Add(property.Name.ToLower(), value);

                unusedFields?.Remove(property.Name);
            }

            if (unusedFields != null)
            {
                foreach (var field in unusedFields)
                {
                    record.Attributes.Add(field, null);
                }
            }

            return(record);
        }