Я также получил исключение etag, когда использую Merge
для управления сущностью, которой нет в таблице.
System.ArgumentException: 'Merge requires an ETag (which may be the '*' wildcard).'
Ваше требование может быть достигнуто с помощью Retrieve
и InsertOrMerge
.
Добавьте два свойства Email
и Address
к вашему Item
классу.
public class Item: TableEntity
{
public Item(String PartitionKey, String RowKey, String Name, String Email=null, String Address=null)
{
this.RowKey = RowKey ;
this.PartitionKey = PartitionKey;
this.Name = Name;
this.Email = Email;
this.Address = Address;
}
public Item(){}
public String Name { get; set; }
public String Email { get; set; }
public String Address { get; set; }
}
Добавьте переключатель, чтобы указать, какие свойства загружать.
TableOperation to = TableOperation.Retrieve<Item>("PK","RK");
TableResult tr = table.ExecuteAync(to).Result;
var item;
if (tr != null)
{
item = new Item
{
PartitionKey = "PARTITIONID",
RowKey = "ROWID",
Name = "DEMO",
}
}
else
{
item = new Item
{
PartitionKey = "PARTITIONID",
RowKey = "ROWID",
Name = "DEMO",
Email = "test@example.com",
Address = "Britain"
}
}
to = TableOperation.InsertOrMerge(item);
tr = await ct.ExecuteAysnc(to).Result;
.Когда вы выполняете InsertOrMerge
,
- Если элемент существует, его содержимое (Имя) будет обновляться вашим новым элементом.
- Если он не существует, он будетвставлено как положено.