本文整理汇总了C#中TableBatchOperation.InsertOrMerge方法的典型用法代码示例。如果您正苦于以下问题:C# TableBatchOperation.InsertOrMerge方法的具体用法?C# TableBatchOperation.InsertOrMerge怎么用?C# TableBatchOperation.InsertOrMerge使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TableBatchOperation
的用法示例。
在下文中一共展示了TableBatchOperation.InsertOrMerge方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetCreataTableStorage
public IEnumerable<Usuarios> GetCreataTableStorage()
{
CloudTable table = getTable();
table.CreateIfNotExists();
TableBatchOperation batch = new TableBatchOperation();
batch.InsertOrMerge(new Usuarios("usuarios", "759990") { Nome = "Christiano Donke", Email = "[email protected]" });
batch.InsertOrMerge(new Usuarios("usuarios", "677040") { Nome = "Alexandre Campos", Email = "[email protected]" });
table.ExecuteBatch(batch);
return this.queryAzureStorage();
}
示例2: Insert
public void Insert()
{
TableBatchOperation batchOperation = new TableBatchOperation();
Hashtable barcode = new Hashtable();
StringBuilder sb = new StringBuilder();
for (int i = id; i < id + 100 && i < Program._DATA_TABLE.Rows.Count; i++)
{
if (!barcode.ContainsKey(Program._DATA_TABLE.Rows[i]["Barcode"].ToString().Trim()))
{
try
{
sb.Append(Program._DATA_TABLE.Rows[i]["Barcode"].ToString().Trim() + "|");
ShopBarcodeEntity data = new ShopBarcodeEntity(Program._DATA_TABLE.Rows[i]["Shop"].ToString().Trim(), Program._DATA_TABLE.Rows[i]["Barcode"].ToString().Trim());
data.OrderNo = Program._DATA_TABLE.Rows[i]["BillNumber"].ToString().Trim();
data.Product = Program._DATA_TABLE.Rows[i]["Product"].ToString().Trim().PadLeft(8, '0');
data.Cost = double.Parse(Program._DATA_TABLE.Rows[i]["SellPrice"].ToString().Trim());
data.SellFinished = false;
batchOperation.InsertOrMerge(data);
barcode[Program._DATA_TABLE.Rows[i]["Barcode"].ToString().Trim()] = true;
}
catch { }
}
}
try
{
Program._RECORD++;
Console.WriteLine("Insert Record {0}-{1}\t\tTotal {2} Records", id + 1, id + 100, Program._RECORD*100);
Program._CLOUD_TABLE.ExecuteBatch(batchOperation);
}
catch (Exception e)
{
Program.WriteErrorLog("Record " + (id + 1) + "-" + (id + 100) + " Error \n" + sb.ToString() + "\n" + e.Message + "\n" + e.StackTrace);
}
}
示例3: Insert
public void Insert()
{
TableBatchOperation batchOperation = new TableBatchOperation();
Hashtable bank = new Hashtable();
for (int i = id; i < id + 100 && i < Program._DATA_TABLE.Rows.Count; i++)
{
if (!bank.ContainsKey(Program._DATA_TABLE.Rows[i]["ID"].ToString().Trim()))
{
try
{
DynamicTableEntity data = new DynamicTableEntity();
data.PartitionKey = "88888888";
data.RowKey = Program._DATA_TABLE.Rows[i]["ID"].ToString().Trim().PadLeft(6, '0');
Dictionary<string, EntityProperty> properties = new Dictionary<string, EntityProperty>();
properties.Add("Bank", new EntityProperty(Program._DATA_TABLE.Rows[i]["Bank"].ToString().Trim()));
properties.Add("BranchName", new EntityProperty(Program._DATA_TABLE.Rows[i]["BranchName"].ToString().ToLower().Trim()));
properties.Add("AccountNumber", new EntityProperty(Program._DATA_TABLE.Rows[i]["AccountNumber"].ToString().Trim()));
properties.Add("AccountName", new EntityProperty(Program._DATA_TABLE.Rows[i]["AccountName"].ToString().Trim()));
properties.Add("AccountType", new EntityProperty(int.Parse(Program._DATA_TABLE.Rows[i]["AccountType"].ToString().Trim())));
//BankEntity data = new BankEntity("88888888", Program._DATA_TABLE.Rows[i]["ID"].ToString().Trim().PadLeft(6, '0'));
//data.Bank = Program._DATA_TABLE.Rows[i]["Bank"].ToString().Trim();
//data.BranchName = Program._DATA_TABLE.Rows[i]["BranchName"].ToString().ToLower().Trim();
//data.AccountNumber = Program._DATA_TABLE.Rows[i]["AccountNumber"].ToString().Trim();
//data.AccountName = Program._DATA_TABLE.Rows[i]["AccountName"].ToString().Trim();
//data.AccountType = int.Parse(Program._DATA_TABLE.Rows[i]["AccountType"].ToString().Trim());
batchOperation.InsertOrMerge(data);
recBank++;
bank[Program._DATA_TABLE.Rows[i]["ID"].ToString().Trim()] = true;
}
catch { }
}
}
try
{
if (Program._DATA_TABLE.Rows.Count > 0)
{
if (Program._UPDATE)
{
Program._RECORD++;
Console.WriteLine("Update Record {0}-{1}\t\tTotal {2} Records", id + 1, id + 100, Program._RECORD * 100);
Program._CLOUD_TABLE.ExecuteBatch(batchOperation);
}
else
{
Program._RECORD++;
Console.WriteLine("Insert Record {0}-{1}\t\tTotal {2} Records", id + 1, id + 100, Program._RECORD * 100);
Program._CLOUD_TABLE.ExecuteBatch(batchOperation);
}
}
}
catch (Exception e)
{
Program.WriteErrorLog("Record " + (id + 1) + "-" + (id + 100) + " Error \n" + e.Message + "\n" + e.StackTrace);
}
}
示例4: Insert
public void Insert()
{
TableBatchOperation batchOperation = new TableBatchOperation();
Hashtable TransferD = new Hashtable();
for (int i = id; i < id + 100 && i < Program._DATA_TABLE.Rows.Count; i++)
{
string Rowkey = (Program._DATA_TABLE.Rows[i]["ID"].ToString().Trim() + "-" + Program._DATA_TABLE.Rows[i]["SellNumber"].ToString().Trim());
if (!TransferD.ContainsKey(Rowkey))
{
try
{
DynamicTableEntity data = new DynamicTableEntity();
data.PartitionKey = "88888888";
data.RowKey = Rowkey;
Dictionary<string, EntityProperty> properties = new Dictionary<string, EntityProperty>();
properties.Add("SellNumber", new EntityProperty(Program._DATA_TABLE.Rows[i]["SellNumber"].ToString().Trim().PadLeft(8, '0')));
properties.Add("ReceiveMoney", new EntityProperty(double.Parse(Program._DATA_TABLE.Rows[i]["ReceiveMoney"].ToString().ToLower().Trim())));
//BankTransferDetailEntity data = new BankTransferDetailEntity("88888888", Rowkey);
//data.SellNumber = Program._DATA_TABLE.Rows[i]["SellNumber"].ToString().Trim().PadLeft(8, '0');
//data.ReceiveMoney = double.Parse(Program._DATA_TABLE.Rows[i]["ReceiveMoney"].ToString().ToLower().Trim());
batchOperation.InsertOrMerge(data);
recTransferD++;
TransferD[Rowkey] = true;
}
catch { }
}
}
try
{
if (Program._DATA_TABLE.Rows.Count > 0)
{
if (Program._UPDATE)
{
Program._RECORD++;
Console.WriteLine("Update Record {0}-{1}\t\tTotal {2} Records", id + 1, id + 100, Program._RECORD * 100);
Program._CLOUD_TABLE.ExecuteBatch(batchOperation);
}
else
{
Program._RECORD++;
Console.WriteLine("Insert Record {0}-{1}\t\tTotal {2} Records", id + 1, id + 100, Program._RECORD * 100);
Program._CLOUD_TABLE.ExecuteBatch(batchOperation);
}
}
}
catch (Exception e)
{
Program.WriteErrorLog("Record " + (id + 1) + "-" + (id + 100) + " Error \n" + e.Message + "\n" + e.StackTrace);
}
}
示例5: bwUpdateConfig_DoWork
private void bwUpdateConfig_DoWork(object sender, DoWorkEventArgs e)
{
dynamic d = new DynamicEntity(Param.ShopId, "Config");
d.Value = JsonConvert.SerializeObject(Param.SystemConfig);
var azureTable = Param.AzureTableClient.GetTableReference("Shop");
TableBatchOperation batchOperation = new TableBatchOperation();
batchOperation.InsertOrMerge(d);
azureTable.ExecuteBatch(batchOperation);
d = new DynamicEntity(Param.ShopId, Param.LicenseKey);
d.DevicePrinter = Param.DevicePrinter;
azureTable = Param.AzureTableClient.GetTableReference("ShopApplication");
batchOperation = new TableBatchOperation();
batchOperation.InsertOrMerge(d);
azureTable.ExecuteBatch(batchOperation);
Properties.Settings.Default.DevicePrinter = Param.DevicePrinter;
Properties.Settings.Default.Save();
Properties.Settings.Default.Upgrade();
}
示例6: Load
public void Load()
{
TableBatchManager.LogInfo("Load batch called");
try
{
TableBatchOperation op = new TableBatchOperation();
foreach (var e in Entities)
{
if (Merge)
op.InsertOrMerge(e);
else
op.InsertOrReplace(e);
}
Table.ExecuteBatch(op);
TableBatchManager.LogInfo("exec batch");
}
catch(Exception ex)
{
TableBatchManager.LogError("Error: " + ex);
}
}
示例7: TableBatchInsertOrMergeSync
public void TableBatchInsertOrMergeSync()
{
CloudTableClient tableClient = GenerateCloudTableClient();
// Insert Or Merge with no pre-existing entity
DynamicTableEntity insertOrMergeEntity = new DynamicTableEntity("insertOrMerge entity", "foo");
insertOrMergeEntity.Properties.Add("prop1", new EntityProperty("value1"));
TableBatchOperation batch = new TableBatchOperation();
batch.InsertOrMerge(insertOrMergeEntity);
currentTable.ExecuteBatch(batch);
// Retrieve Entity & Verify Contents
TableResult result = currentTable.Execute(TableOperation.Retrieve(insertOrMergeEntity.PartitionKey, insertOrMergeEntity.RowKey));
DynamicTableEntity retrievedEntity = result.Result as DynamicTableEntity;
Assert.IsNotNull(retrievedEntity);
Assert.AreEqual(insertOrMergeEntity.Properties.Count, retrievedEntity.Properties.Count);
DynamicTableEntity mergeEntity = new DynamicTableEntity(insertOrMergeEntity.PartitionKey, insertOrMergeEntity.RowKey);
mergeEntity.Properties.Add("prop2", new EntityProperty("value2"));
TableBatchOperation batch2 = new TableBatchOperation();
batch2.InsertOrMerge(mergeEntity);
currentTable.ExecuteBatch(batch2);
// Retrieve Entity & Verify Contents
result = currentTable.Execute(TableOperation.Retrieve(insertOrMergeEntity.PartitionKey, insertOrMergeEntity.RowKey));
retrievedEntity = result.Result as DynamicTableEntity;
Assert.IsNotNull(retrievedEntity);
Assert.AreEqual(2, retrievedEntity.Properties.Count);
Assert.IsNotNull(retrievedEntity);
Assert.AreEqual(insertOrMergeEntity.Properties["prop1"], retrievedEntity.Properties["prop1"]);
Assert.AreEqual(mergeEntity.Properties["prop2"], retrievedEntity.Properties["prop2"]);
}
示例8: TableBatchOperationsWithEmptyKeys
public void TableBatchOperationsWithEmptyKeys()
{
CloudTableClient tableClient = GenerateCloudTableClient();
// Insert Entity
DynamicTableEntity ent = new DynamicTableEntity() { PartitionKey = "", RowKey = "" };
ent.Properties.Add("foo2", new EntityProperty("bar2"));
ent.Properties.Add("foo", new EntityProperty("bar"));
TableBatchOperation batch = new TableBatchOperation();
batch.Insert(ent);
currentTable.ExecuteBatch(batch);
// Retrieve Entity
TableBatchOperation retrieveBatch = new TableBatchOperation();
retrieveBatch.Retrieve(ent.PartitionKey, ent.RowKey);
TableResult result = currentTable.ExecuteBatch(retrieveBatch).First();
DynamicTableEntity retrievedEntity = result.Result as DynamicTableEntity;
Assert.IsNotNull(retrievedEntity);
Assert.AreEqual(ent.PartitionKey, retrievedEntity.PartitionKey);
Assert.AreEqual(ent.RowKey, retrievedEntity.RowKey);
Assert.AreEqual(ent.Properties.Count, retrievedEntity.Properties.Count);
Assert.AreEqual(ent.Properties["foo"].StringValue, retrievedEntity.Properties["foo"].StringValue);
Assert.AreEqual(ent.Properties["foo"], retrievedEntity.Properties["foo"]);
Assert.AreEqual(ent.Properties["foo2"].StringValue, retrievedEntity.Properties["foo2"].StringValue);
Assert.AreEqual(ent.Properties["foo2"], retrievedEntity.Properties["foo2"]);
// InsertOrMerge
DynamicTableEntity insertOrMergeEntity = new DynamicTableEntity(ent.PartitionKey, ent.RowKey);
insertOrMergeEntity.Properties.Add("foo3", new EntityProperty("value"));
batch = new TableBatchOperation();
batch.InsertOrMerge(insertOrMergeEntity);
currentTable.ExecuteBatch(batch);
result = currentTable.ExecuteBatch(retrieveBatch).First();
retrievedEntity = result.Result as DynamicTableEntity;
Assert.IsNotNull(retrievedEntity);
Assert.AreEqual(insertOrMergeEntity.Properties["foo3"], retrievedEntity.Properties["foo3"]);
// InsertOrReplace
DynamicTableEntity insertOrReplaceEntity = new DynamicTableEntity(ent.PartitionKey, ent.RowKey);
insertOrReplaceEntity.Properties.Add("prop2", new EntityProperty("otherValue"));
batch = new TableBatchOperation();
batch.InsertOrReplace(insertOrReplaceEntity);
currentTable.ExecuteBatch(batch);
result = currentTable.ExecuteBatch(retrieveBatch).First();
retrievedEntity = result.Result as DynamicTableEntity;
Assert.IsNotNull(retrievedEntity);
Assert.AreEqual(1, retrievedEntity.Properties.Count);
Assert.AreEqual(insertOrReplaceEntity.Properties["prop2"], retrievedEntity.Properties["prop2"]);
// Merge
DynamicTableEntity mergeEntity = new DynamicTableEntity(retrievedEntity.PartitionKey, retrievedEntity.RowKey) { ETag = retrievedEntity.ETag };
mergeEntity.Properties.Add("mergeProp", new EntityProperty("merged"));
batch = new TableBatchOperation();
batch.Merge(mergeEntity);
currentTable.ExecuteBatch(batch);
// Retrieve Entity & Verify Contents
result = currentTable.ExecuteBatch(retrieveBatch).First();
retrievedEntity = result.Result as DynamicTableEntity;
Assert.IsNotNull(retrievedEntity);
Assert.AreEqual(mergeEntity.Properties["mergeProp"], retrievedEntity.Properties["mergeProp"]);
// Replace
DynamicTableEntity replaceEntity = new DynamicTableEntity(ent.PartitionKey, ent.RowKey) { ETag = retrievedEntity.ETag };
replaceEntity.Properties.Add("replaceProp", new EntityProperty("replace"));
batch = new TableBatchOperation();
batch.Replace(replaceEntity);
currentTable.ExecuteBatch(batch);
// Retrieve Entity & Verify Contents
result = currentTable.ExecuteBatch(retrieveBatch).First();
retrievedEntity = result.Result as DynamicTableEntity;
Assert.IsNotNull(retrievedEntity);
Assert.AreEqual(replaceEntity.Properties.Count, retrievedEntity.Properties.Count);
Assert.AreEqual(replaceEntity.Properties["replaceProp"], retrievedEntity.Properties["replaceProp"]);
// Delete Entity
batch = new TableBatchOperation();
batch.Delete(retrievedEntity);
currentTable.ExecuteBatch(batch);
// Retrieve Entity
result = currentTable.ExecuteBatch(retrieveBatch).First();
Assert.IsNull(result.Result);
}
示例9: TableBatchAllSupportedOperationsAPM
public void TableBatchAllSupportedOperationsAPM()
{
CloudTableClient tableClient = GenerateCloudTableClient();
TableBatchOperation batch = new TableBatchOperation();
string pk = Guid.NewGuid().ToString();
// insert
batch.Insert(GenerateRandomEnitity(pk));
// delete
{
DynamicTableEntity entity = GenerateRandomEnitity(pk);
currentTable.Execute(TableOperation.Insert(entity));
batch.Delete(entity);
}
// replace
{
DynamicTableEntity entity = GenerateRandomEnitity(pk);
currentTable.Execute(TableOperation.Insert(entity));
batch.Replace(entity);
}
// insert or replace
{
DynamicTableEntity entity = GenerateRandomEnitity(pk);
currentTable.Execute(TableOperation.Insert(entity));
batch.InsertOrReplace(entity);
}
// merge
{
DynamicTableEntity entity = GenerateRandomEnitity(pk);
currentTable.Execute(TableOperation.Insert(entity));
batch.Merge(entity);
}
// insert or merge
{
DynamicTableEntity entity = GenerateRandomEnitity(pk);
currentTable.Execute(TableOperation.Insert(entity));
batch.InsertOrMerge(entity);
}
IList<TableResult> results = null;
using (ManualResetEvent evt = new ManualResetEvent(false))
{
IAsyncResult asyncRes = null;
currentTable.BeginExecuteBatch(batch, (res) =>
{
asyncRes = res;
evt.Set();
}, null);
evt.WaitOne();
results = currentTable.EndExecuteBatch(asyncRes);
}
Assert.AreEqual(results.Count, 6);
IEnumerator<TableResult> enumerator = results.GetEnumerator();
enumerator.MoveNext();
Assert.AreEqual(enumerator.Current.HttpStatusCode, (int)HttpStatusCode.Created);
enumerator.MoveNext();
Assert.AreEqual(enumerator.Current.HttpStatusCode, (int)HttpStatusCode.NoContent);
enumerator.MoveNext();
Assert.AreEqual(enumerator.Current.HttpStatusCode, (int)HttpStatusCode.NoContent);
enumerator.MoveNext();
Assert.AreEqual(enumerator.Current.HttpStatusCode, (int)HttpStatusCode.NoContent);
enumerator.MoveNext();
Assert.AreEqual(enumerator.Current.HttpStatusCode, (int)HttpStatusCode.NoContent);
enumerator.MoveNext();
Assert.AreEqual(enumerator.Current.HttpStatusCode, (int)HttpStatusCode.NoContent);
}
示例10: Insert
public void Insert()
{
TableBatchOperation batchOperation = new TableBatchOperation();
Hashtable barcode = new Hashtable();
for (int i = id; i < id + 100 && i < Program._DATA_TABLE.Rows.Count; i++)
{
if ((!barcode.ContainsKey(Program._DATA_TABLE.Rows[i]["Shop"].ToString().Trim()) && !barcode.ContainsKey(Program._DATA_TABLE.Rows[i]["Barcode"].ToString().Trim())) || (Program._UPDATE == true))
{
try
{
DynamicTableEntity data = new DynamicTableEntity();
data.PartitionKey = Program._DATA_TABLE.Rows[i]["Shop"].ToString().Trim();
data.RowKey = Program._DATA_TABLE.Rows[i]["Barcode"].ToString().Trim().PadLeft(8, '0');
Dictionary<string, EntityProperty> properties = new Dictionary<string, EntityProperty>();
//BarcodeEntity data = new BarcodeEntity(Program._DATA_TABLE.Rows[i]["Shop"].ToString().Trim(), Program._DATA_TABLE.Rows[i]["Barcode"].ToString().Trim().PadLeft(8, '0'));
properties.Add("Product", new EntityProperty(Program._DATA_TABLE.Rows[i]["ProductID"].ToString().Trim().PadLeft(8, '0')));
properties.Add("DocNo", new EntityProperty(Program._DATA_TABLE.Rows[i]["DocNumber"].ToString().Trim().PadLeft(8, '0')));
properties.Add("SellNo", new EntityProperty(Program._DATA_TABLE.Rows[i]["SellNumber"].ToString().Trim().PadLeft(8, '0')));
properties.Add("OrderNo", new EntityProperty(Program._DATA_TABLE.Rows[i]["BillNumber"].ToString().Trim()));
try
{
properties.Add("ReceivedDate", new EntityProperty(Convert.ToDateTime(Program._DATA_TABLE.Rows[i]["ReceivedDate"].ToString())));
}
catch { }
try
{
properties.Add("SellDate", new EntityProperty(Convert.ToDateTime(Program._DATA_TABLE.Rows[i]["SellDate"].ToString())));
}
catch { }
properties.Add("Customer", new EntityProperty(Program._DATA_TABLE.Rows[i]["CustomerNumber"].ToString().Trim().PadLeft(6, '0')));
properties.Add("SellPrice", new EntityProperty(double.Parse(Program._DATA_TABLE.Rows[i]["SellPrice"].ToString().Trim())));
properties.Add("Cost", new EntityProperty(0));
properties.Add("OperationCost", new EntityProperty(0));
properties.Add("SellFinished", new EntityProperty(true));
//data.Product = Program._DATA_TABLE.Rows[i]["ProductID"].ToString().Trim().PadLeft(8, '0');
//data.DocNo = Program._DATA_TABLE.Rows[i]["DocNumber"].ToString().Trim().PadLeft(8, '0');
//data.SellNo = Program._DATA_TABLE.Rows[i]["SellNumber"].ToString().Trim().PadLeft(8, '0');
//data.OrderNo = Program._DATA_TABLE.Rows[i]["BillNumber"].ToString().Trim();
//try { data.ReceivedDate = Convert.ToDateTime(Program._DATA_TABLE.Rows[i]["ReceivedDate"].ToString()); }
//catch { }
//try { data.SellDate = Convert.ToDateTime(Program._DATA_TABLE.Rows[i]["SellDate"].ToString()); }
//catch { }
//data.Customer = Program._DATA_TABLE.Rows[i]["CustomerNumber"].ToString().Trim().PadLeft(6, '0');
//data.SellPrice = double.Parse(Program._DATA_TABLE.Rows[i]["SellPrice"].ToString().Trim());
//data.Cost = 0;
//data.OperationCost = 0;
//data.SellFinished = true;
recBarcode++;
batchOperation.InsertOrMerge(data);
barcode[Program._DATA_TABLE.Rows[i]["Barcode"].ToString().Trim()] = true;
}
catch
{
Console.WriteLine(Program._DATA_TABLE.Rows[i]["Barcode"].ToString().Trim());
}
}
}
try
{
if (Program._DATA_TABLE.Rows.Count > 0)
{
if (Program._UPDATE)
{
Program._RECORD++;
Console.WriteLine("Update Record {0}-{1}\t\tTotal {2} Records", id + 1, id + 100, Program._RECORD * 100);
Program._CLOUD_TABLE.ExecuteBatch(batchOperation);
//Program._COUNT_BARCODE--;
}
else
{
Program._RECORD++;
Console.WriteLine("Insert Record {0}-{1}\t\tTotal {2} Records", id + 1, id + 100, Program._RECORD * 100);
Program._CLOUD_TABLE.ExecuteBatch(batchOperation);
}
}
}
catch (Exception e)
{
Program.WriteErrorLog("Record " + (id + 1) + "-" + (id + 100) + " Error \n" + e.Message + "\n" + e.StackTrace);
}
}
示例11: TableIngressEgressBatch
public void TableIngressEgressBatch()
{
CloudTableClient tableClient = GenerateCloudTableClient();
TableBatchOperation batch = new TableBatchOperation();
for (int m = 0; m < 100; m++)
{
// Insert Entity
DynamicTableEntity insertEntity = new DynamicTableEntity("insert test", m.ToString());
insertEntity.Properties.Add("prop" + m.ToString(), new EntityProperty(new byte[30 * 1024]));
batch.InsertOrMerge(insertEntity);
}
// APM
TestHelper.ValidateIngressEgress(Selectors.IfUrlContains("$batch"), () =>
{
OperationContext opContext = new OperationContext();
currentTable.EndExecuteBatch(currentTable.BeginExecuteBatch(batch, new TableRequestOptions() { RetryPolicy = new RetryPolicies.NoRetry() }, opContext, null, null));
return opContext.LastResult;
});
// SYNC
TestHelper.ValidateIngressEgress(Selectors.IfUrlContains("$batch"), () =>
{
OperationContext opContext = new OperationContext();
currentTable.ExecuteBatch(batch, new TableRequestOptions() { RetryPolicy = new RetryPolicies.NoRetry() }, opContext);
return opContext.LastResult;
});
}
示例12: DoTableBatchInsertOrMergeAsync
private async Task DoTableBatchInsertOrMergeAsync(TablePayloadFormat format)
{
tableClient.DefaultRequestOptions.PayloadFormat = format;
// Insert Or Merge with no pre-existing entity
DynamicTableEntity insertOrMergeEntity = new DynamicTableEntity("insertOrMerge entity", "foo" + format.ToString());
insertOrMergeEntity.Properties.Add("prop1", new EntityProperty("value1"));
TableBatchOperation batch = new TableBatchOperation();
batch.InsertOrMerge(insertOrMergeEntity);
await currentTable.ExecuteBatchAsync(batch);
// Retrieve Entity & Verify Contents
TableResult result = await currentTable.ExecuteAsync(TableOperation.Retrieve(insertOrMergeEntity.PartitionKey, insertOrMergeEntity.RowKey));
DynamicTableEntity retrievedEntity = result.Result as DynamicTableEntity;
Assert.IsNotNull(retrievedEntity);
Assert.AreEqual(insertOrMergeEntity.Properties.Count, retrievedEntity.Properties.Count);
DynamicTableEntity mergeEntity = new DynamicTableEntity(insertOrMergeEntity.PartitionKey, insertOrMergeEntity.RowKey);
mergeEntity.Properties.Add("prop2", new EntityProperty("value2"));
TableBatchOperation batch2 = new TableBatchOperation();
batch2.InsertOrMerge(mergeEntity);
await currentTable.ExecuteBatchAsync(batch2);
// Retrieve Entity & Verify Contents
result = await currentTable.ExecuteAsync(TableOperation.Retrieve(insertOrMergeEntity.PartitionKey, insertOrMergeEntity.RowKey));
retrievedEntity = result.Result as DynamicTableEntity;
Assert.IsNotNull(retrievedEntity);
Assert.AreEqual(2, retrievedEntity.Properties.Count);
Assert.IsNotNull(retrievedEntity);
Assert.AreEqual(insertOrMergeEntity.Properties["prop1"], retrievedEntity.Properties["prop1"]);
Assert.AreEqual(mergeEntity.Properties["prop2"], retrievedEntity.Properties["prop2"]);
}
示例13: InsertOrMergeBatchWithNEntities
private async Task InsertOrMergeBatchWithNEntities(int n, TablePayloadFormat format)
{
tableClient.DefaultRequestOptions.PayloadFormat = format;
string pk = Guid.NewGuid().ToString();
TableBatchOperation insertBatch = new TableBatchOperation();
TableBatchOperation mergeBatch = new TableBatchOperation();
TableBatchOperation delBatch = new TableBatchOperation();
for (int m = 0; m < n; m++)
{
insertBatch.InsertOrMerge(GenerateRandomEntity(pk));
}
IList<TableResult> results = await currentTable.ExecuteBatchAsync(insertBatch);
foreach (TableResult res in results)
{
Assert.AreEqual(res.HttpStatusCode, (int)HttpStatusCode.NoContent);
// update entity and add to merge batch
DynamicTableEntity ent = res.Result as DynamicTableEntity;
ent.Properties.Add("foo2", new EntityProperty("bar2"));
mergeBatch.InsertOrMerge(ent);
}
// execute insertOrMerge batch, this time entities exist
IList<TableResult> mergeResults = await currentTable.ExecuteBatchAsync(mergeBatch);
foreach (TableResult res in mergeResults)
{
Assert.AreEqual(res.HttpStatusCode, (int)HttpStatusCode.NoContent);
// Add to delete batch
delBatch.Delete((ITableEntity)res.Result);
}
IList<TableResult> delResults = await currentTable.ExecuteBatchAsync(delBatch);
foreach (TableResult res in delResults)
{
Assert.AreEqual(res.HttpStatusCode, (int)HttpStatusCode.NoContent);
}
}
示例14: CloudTableClientNullPartitionKeyRowKeyCheck
public void CloudTableClientNullPartitionKeyRowKeyCheck()
{
CloudTableClient client = GenerateCloudTableClient();
var table = client.GetTableReference("newtable");
table.CreateIfNotExists();
try
{
TableBatchOperation batch = new TableBatchOperation();
TableEntity entity = new TableEntity(null, "foo");
batch.InsertOrMerge(entity);
table.ExecuteBatch(batch);
}
catch (Exception ex)
{
Assert.IsInstanceOfType(ex, typeof(ArgumentNullException));
}
try
{
TableBatchOperation batch = new TableBatchOperation();
TableEntity entity = new TableEntity("foo", null);
batch.InsertOrMerge(entity);
table.ExecuteBatch(batch);
}
catch (Exception ex)
{
Assert.IsInstanceOfType(ex, typeof(ArgumentNullException));
}
}
示例15: DoRandomAtomicCalls
async Task DoRandomAtomicCalls()
{
for (int callNum = 0; callNum < MigrationModel.NUM_CALLS_PER_MACHINE; callNum++)
{
SortedDictionary<PrimaryKey, DynamicTableEntity> dump = await peekProxy.DumpReferenceTableAsync();
if (PSharpRuntime.Nondeterministic())
{
// Query
var query = new TableQuery<DynamicTableEntity>();
query.FilterString = ChainTableUtils.CombineFilters(
TableQuery.GenerateFilterCondition(
TableConstants.PartitionKey, QueryComparisons.Equal, MigrationModel.SINGLE_PARTITION_KEY),
TableOperators.And,
NondeterministicUserPropertyFilterString());
await RunQueryAtomicAsync(query);
}
else
{
// Batch write
int batchSize = PSharpRuntime.Nondeterministic() ? 2 : 1;
var batch = new TableBatchOperation();
var rowKeyChoices = new List<string> { "0", "1", "2", "3", "4", "5" };
for (int opNum = 0; opNum < batchSize; opNum++)
{
int opTypeNum = PSharpNondeterminism.Choice(7);
int rowKeyI = PSharpNondeterminism.Choice(rowKeyChoices.Count);
string rowKey = rowKeyChoices[rowKeyI];
rowKeyChoices.RemoveAt(rowKeyI); // Avoid duplicate in same batch
var primaryKey = new PrimaryKey(MigrationModel.SINGLE_PARTITION_KEY, rowKey);
string eTag = null;
if (opTypeNum >= 1 && opTypeNum <= 3)
{
DynamicTableEntity existingEntity;
int etagTypeNum = PSharpNondeterminism.Choice(
dump.TryGetValue(primaryKey, out existingEntity) ? 3 : 2);
switch (etagTypeNum)
{
case 0: eTag = ChainTable2Constants.ETAG_ANY; break;
case 1: eTag = "wrong"; break;
case 2: eTag = existingEntity.ETag; break;
}
}
DynamicTableEntity entity = new DynamicTableEntity
{
PartitionKey = MigrationModel.SINGLE_PARTITION_KEY,
RowKey = rowKey,
ETag = eTag,
Properties = new Dictionary<string, EntityProperty> {
// Give us something to see on merge. Might help with tracing too!
{ string.Format("{0}_c{1}_o{2}", machineId.ToString(), callNum, opNum),
new EntityProperty(true) },
// Property with 50%/50% distribution for use in filters.
{ "isHappy", new EntityProperty(PSharpRuntime.Nondeterministic()) }
}
};
switch (opTypeNum)
{
case 0: batch.Insert(entity); break;
case 1: batch.Replace(entity); break;
case 2: batch.Merge(entity); break;
case 3: batch.Delete(entity); break;
case 4: batch.InsertOrReplace(entity); break;
case 5: batch.InsertOrMerge(entity); break;
case 6:
entity.ETag = ChainTable2Constants.ETAG_DELETE_IF_EXISTS;
batch.Delete(entity); break;
}
}
await RunBatchAsync(batch);
}
}
}