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); }
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); }