Esempio n. 1
0
        private int UpdateEntryPropertiesAndAssociations(string tableName, IDictionary <string, object> entryKey, IDictionary <string, object> entryData, EntryMembers entryMembers)
        {
            bool merge       = CheckMergeConditions(tableName, entryKey, entryData);
            var  commandText = FormatGetKeyCommand(tableName, entryKey);

            var entryElement = ODataHelper.CreateDataElement(entryMembers.Properties);

            foreach (var associatedData in entryMembers.AssociationsByValue)
            {
                CreateLinkElement(entryElement, tableName, associatedData);
            }

            var command = new HttpCommand(merge ? RestVerbs.MERGE : RestVerbs.PUT, commandText, entryData, entryElement.ToString());

            _requestBuilder.AddCommandToRequest(command);
            var result = _requestRunner.UpdateEntry(command);

            foreach (var associatedData in entryMembers.AssociationsByContentId)
            {
                var linkCommand = CreateLinkCommand(tableName, associatedData.Key,
                                                    ODataHelper.CreateLinkPath(command.ContentId),
                                                    ODataHelper.CreateLinkPath(associatedData.Value));
                _requestBuilder.AddCommandToRequest(linkCommand);
                _requestRunner.UpdateEntry(linkCommand);
            }

            return(result);
        }
Esempio n. 2
0
        public IDictionary <string, object> InsertEntry(string tableName, IDictionary <string, object> entryData, bool resultRequired)
        {
            var entryMembers = ParseEntryMembers(tableName, entryData);

            var entry = ODataHelper.CreateDataElement(entryMembers.Properties);

            foreach (var associatedData in entryMembers.AssociationsByValue)
            {
                CreateLinkElement(entry, tableName, associatedData);
            }

            var commandText = GetTableActualName(tableName);
            var command     = HttpCommand.Post(commandText, entryData, entry.ToString());

            _requestBuilder.AddCommandToRequest(command);
            var result = _requestRunner.InsertEntry(command, resultRequired);

            foreach (var associatedData in entryMembers.AssociationsByContentId)
            {
                var linkCommand = CreateLinkCommand(tableName, associatedData.Key,
                                                    ODataHelper.CreateLinkPath(command.ContentId),
                                                    ODataHelper.CreateLinkPath(associatedData.Value));
                _requestBuilder.AddCommandToRequest(linkCommand);
                _requestRunner.InsertEntry(linkCommand, resultRequired);
            }

            return(result);
        }