本文整理汇总了C#中Amazon.DynamoDB.DocumentModel.Document.ToAttributeUpdateMap方法的典型用法代码示例。如果您正苦于以下问题:C# Document.ToAttributeUpdateMap方法的具体用法?C# Document.ToAttributeUpdateMap怎么用?C# Document.ToAttributeUpdateMap使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Amazon.DynamoDB.DocumentModel.Document
的用法示例。
在下文中一共展示了Document.ToAttributeUpdateMap方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: UpdateHelper
private Document UpdateHelper(Document doc, Key key, UpdateItemOperationConfig config)
{
var currentConfig = config ?? new UpdateItemOperationConfig();
var attributeUpdates = doc.ToAttributeUpdateMap(true);
foreach (var keyName in this.keyNames)
{
if (keyName != null)
{
attributeUpdates.Remove(keyName);
}
}
UpdateItemRequest req = new UpdateItemRequest
{
TableName = TableName,
Key = key,
AttributeUpdates = attributeUpdates,
ReturnValues = EnumToStringMapper.Convert(currentConfig.ReturnValues)
};
req.BeforeRequestEvent += new RequestEventHandler(this.UserAgentRequestEventHandler);
if (currentConfig.Expected != null)
req.Expected = currentConfig.Expected.ToExpectedAttributeMap();
var resp = DDBClient.UpdateItem(req);
doc.CommitChanges();
Document ret = null;
if (currentConfig.ReturnValues != ReturnValues.None)
{
ret = Document.FromAttributeMap(resp.UpdateItemResult.Attributes);
}
return ret;
}
示例2: UpdateHelper
internal Document UpdateHelper(Document doc, Key key, UpdateItemOperationConfig config, bool isAsync)
{
var currentConfig = config ?? new UpdateItemOperationConfig();
// If the keys have been changed, treat entire document as having changed
bool haveKeysChanged = HaveKeysChanged(doc);
bool updateChangedAttributesOnly = !haveKeysChanged;
var attributeUpdates = doc.ToAttributeUpdateMap(updateChangedAttributesOnly);
foreach (var keyName in this.keyNames)
{
attributeUpdates.Remove(keyName);
}
UpdateItemRequest req = new UpdateItemRequest
{
TableName = TableName,
Key = key,
AttributeUpdates = attributeUpdates.Count == 0 ?
new Dictionary<string,AttributeValueUpdate>() : attributeUpdates,
ReturnValues = EnumToStringMapper.Convert(currentConfig.ReturnValues)
};
req.BeforeRequestEvent += isAsync ?
new RequestEventHandler(UserAgentRequestEventHandlerAsync) :
new RequestEventHandler(UserAgentRequestEventHandlerSync);
if (currentConfig.Expected != null)
req.Expected = currentConfig.Expected.ToExpectedAttributeMap();
var resp = DDBClient.UpdateItem(req);
var returnedAttributes = resp.UpdateItemResult.Attributes;
doc.CommitChanges();
Document ret = null;
if (currentConfig.ReturnValues != ReturnValues.None)
{
ret = Document.FromAttributeMap(returnedAttributes);
}
return ret;
}
示例3: UpdateHelper
internal Document UpdateHelper(Document doc, Key key, UpdateItemOperationConfig config, bool isAsync)
{
var currentConfig = config ?? new UpdateItemOperationConfig();
var attributeUpdates = doc.ToAttributeUpdateMap(true);
foreach (var keyName in this.keyNames)
{
attributeUpdates.Remove(keyName);
}
ReturnValues currentReturnValue = currentConfig.ReturnValues;
bool keysOnlyUpdate = attributeUpdates.Count == 0;
// If there are no non-key attributes, make an Update call with AllNewAttributes
// return value. If no attributes returned, the item doesn't exist yet, so
// make a Put call.
if (keysOnlyUpdate)
{
currentReturnValue = ReturnValues.AllNewAttributes;
}
UpdateItemRequest req = new UpdateItemRequest
{
TableName = TableName,
Key = key,
AttributeUpdates = attributeUpdates,
ReturnValues = EnumToStringMapper.Convert(currentReturnValue)
};
req.BeforeRequestEvent += isAsync ?
new RequestEventHandler(UserAgentRequestEventHandlerAsync) :
new RequestEventHandler(UserAgentRequestEventHandlerSync);
if (currentConfig.Expected != null)
req.Expected = currentConfig.Expected.ToExpectedAttributeMap();
var resp = DDBClient.UpdateItem(req);
var returnedAttributes = resp.UpdateItemResult.Attributes;
doc.CommitChanges();
if (keysOnlyUpdate)
{
if (returnedAttributes == null || returnedAttributes.Count == 0)
{
// if only keys were specified and no attributes are returned, we must issue a Put
return CallKeysOnlyPut(key, currentConfig, isAsync);
}
else
{
// update was called with AllNewAttributes, item exists
// return correct set of attributes
// [None] is handled at the end
// [AllNewAttributes, AllOldAttributes] are equivalent in this case, no-op
// [UpdatedNewAttributes, UpdatedOldAttributes] must return no attributes
switch (currentConfig.ReturnValues)
{
case ReturnValues.UpdatedNewAttributes:
case ReturnValues.UpdatedOldAttributes:
returnedAttributes = new Dictionary<string,AttributeValue>();
break;
}
}
}
Document ret = null;
if (currentConfig.ReturnValues != ReturnValues.None)
{
ret = Document.FromAttributeMap(returnedAttributes);
}
return ret;
}