Gegeben eine PartitionKey, RowKey, Eigenschaftsnamen und-Wert, wie aktualisiere ich, dass Person, Eigentum Wert?
Mit azure-Tabellen, wenn ich das wissen eines Unternehmens RowKey und PartitionKey (so kann ich abrufen, dass die Person), wie Bearbeite ich einen bestimmten Wert der Eigenschaft auf, dass die Entität?
Das klingt wie ein ziemlich standard-Betrieb zu tun, aber der normale Weg, es zu tun ist etwas wie:
public void UpdateEntity(ITableEntity entity)
{
TableOperation replaceOperation = TableOperation.Replace(entity);
table.Execute(replaceOperation);
}
also eine ganze C# TableEntity Objekt als Ersatz, eher als eine einzelne Eigenschaft name/Wert-paar.
Möchte ich etwas mehr wie:
public void UpdateEntityProperty<T>(string partitionKey, string rowKey,
string propertyName, T newPropertyValue)
{
TableOperation retrieveOperation = TableOperation.Retrieve(partitionKey, rowKey);
TableResult retrievedResult = table.Execute(retrieveOperation);
TableEntity entity = (TableEntity)retrievedResult.Result;
//This line, of course, doesn't compile. But you get the idea.
entity.SetPropertyValue(propertyName, newPropertyValue);
TableOperation replaceOperation = TableOperation.Replace(entity);
table.Execute(replaceOperation);
}
Mein Verständnis ist, dass hinter den kulissen, die Zeilen sind gespeichert als ein Satz von Schlüssel-Wert-Paare entsprechend der Eigenschaften auf, die Zeile, so dass das aktualisieren des Werts einer Eigenschaft sollte einfach sein, ohne zu definieren, eine ganze C# - Klasse, die sich aus TableEntity zu tun.
Wie kann ich dies tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Statt "Ersetzen" - operation zu tun, eine "Merge" - operation (http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.windowsazure.storage.table.tableoperation.merge). Merge-Vorgang wird sichergestellt, dass nur die Eigenschaft, die geändert wird, geändert wird, verlassen alle anderen Eigenschaften unverändert bleiben.
Eine vollständige Beispiel unten. Hier habe ich zunächst ein Mitarbeiter und dann nur verändert die "MaritalStatus" Eigentum der Mitarbeiter:
Können Sie auch versuchen, InsertOrMerge (http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.windowsazure.storage.table.tableoperation.insertormerge.aspx) Betrieb als gut.
Nur der Vollständigkeit halber, hier ist was ich landete mit, inspiriert von Gaurav Mantri Antwort:
Versuchen Sie dies:
entity.propertyName = newPropertyValue;
ist Ungültiger code