Esporta (0) Stampa
Espandi tutto

Update Entity

Aggiornamento: febbraio 2014

Tramite l'operazione Update Entity viene aggiornata un'entità esistente in una tabella. Tramite l'operazione Update Entity viene sostituita l'intera entità e vengono rimosse le proprietà.

La richiesta Update Entity può essere costruita nel modo seguente. Si consiglia di utilizzare HTTPS. Sostituire myaccount con il nome dell'account di archiviazione, mytable con il nome della tabella e myPartitionKey e myRowKey con il nome della chiave di partizione e la chiave di riga che identificano l'entità da aggiornare:

 

Metodo URI della richiesta Versione HTTP

PUT

https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey')

HTTP/1.1

L'indirizzo dell'entità da aggiornare può presentare diversi formati nell'URI della richiesta. Per informazioni aggiuntive, vedere la pagina relativa alle convenzioni URI OData.

Quando si effettua una richiesta nel servizio di archiviazione emulato, specificare il nome host dell'emulatore e la porta del servizio tabelle come 127.0.0.1:10002, seguiti dal nome dell'account di archiviazione emulato:

 

Metodo URI della richiesta Versione HTTP

PUT

http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey')

HTTP/1.1

Il servizio tabelle nell'emulatore di archiviazione differisce dal servizio tabelle di Microsoft® Azure™ sotto diversi aspetti. Per altre informazioni, vedere About Development Storage e Differenze tra l'emulatore di archiviazione e i Servizi di archiviazione Azure.

Nessuno.

Nella tabella seguente vengono descritte le intestazioni di richiesta obbligatorie e facoltative.

 

Intestazione della richiesta Descrizione

Authorization

Obbligatorio. Specifica lo schema di autenticazione, il nome dell'account e la firma. Per altre informazioni, vedere Autenticazione per i servizi di archiviazione di Azure.

Date o x-ms-date

Obbligatorio. Specifica l'ora UTC (Coordinated Universal Time) per la richiesta. Per altre informazioni, vedere Autenticazione per i servizi di archiviazione di Azure.

x-ms-version

Facoltativo. Specifica la versione dell'operazione da utilizzare per questa richiesta. Per altre informazioni, vedere Controllo delle versioni per i servizi di archiviazione di Azure.

Content-Type

Obbligatorio. Specifica il tipo di contenuto del payload. I valori possibili sono application/atom+xml e application/json.

Per altre informazioni sui tipi di contenuto validi, vedere Formato di payload per le operazioni del servizio tabelle.

Content-Length

Obbligatorio. Lunghezza del corpo della richiesta.

If-Match

Obbligatorio. Il client può specificare il valore ETag per l'entità nella richiesta al fine di confrontarlo con il valore ETag gestito dal servizio a scopo di concorrenza ottimistica. L'operazione di aggiornamento verrà eseguita solo se il valore ETag inviato dal client corrisponde a quello gestito dal server. Questa corrispondenza indica che l'entità non è stata modificata dall'ultima volta in cui è stata recuperata dal client.

Per forzare un aggiornamento incondizionale, impostare If-Match sul carattere jolly (*).

x-ms-client-request-id

Facoltativo. Fornisce un valore opaco generato dal client con un limite di caratteri di 1 KB che viene registrato nei log di analisi quando la registrazione di Analisi archiviazione è abilitata. L'utilizzo di questa intestazione è consigliato per la correlazione tra le attività sul lato client e le richieste ricevute dal server. Per altre informazioni vedere Informazioni sulla registrazione di Analisi archiviazione e l'articolo relativo all'utilizzo di log per tenere traccia delle richiesta di archiviazione nella registrazione di Azure.

Tramite questa operazione Update Entity è possibile inviare l'entità da aggiornare come set di entità OData, che potrebbe essere un formato JSON o un feed Atom. Per altre informazioni, vedere Inserimento e aggiornamento di entità.

In questo esempio vengono illustrati un URI della richiesta di esempio, le intestazioni della richiesta associate e il corpo della richiesta.

Request URI:
https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')

Request Headers:
x-ms-version: 2013-08-15
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
Content-Type: application/atom+xml
If-Match: *
x-ms-date: Wed, 20 Nov 2013 18:10:24 GMT
Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o=
Content-Length: ###
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 2.0;NetFx

Request Body:
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
  <title />
  <updated>2008-09-18T23:46:37.168836Z</updated>
  <author>
    <name />
  </author>
<id>https://myaccount.table.core.windows.net/mytable(PartitionKey='mypartitionkey',RowKey='myrowkey')</id>
  <content type="application/xml">
    <m:properties>
      <d:Address>Santa Clara</d:Address>
      <d:Age m:type="Edm.Int32">23</d:Age>
      <d:AmountDue m:type="Edm.Double">200.23</d:AmountDue>
      <d:CustomerCode m:type="Edm.Guid">c9da6455-213d-42c9-9a79-3e9149a57833</d:CustomerCode>
      <d:CustomerSince m:type="Edm.DateTime">2008-07-10T00:00:00Z</d:CustomerSince>
      <d:IsActive m:type="Edm.Boolean">false</d:IsActive>
      <d:NumOfOrders m:type="Edm.Int64">255</d:NumOfOrders>
      <d:PartitionKey>mypartitionkey</d:PartitionKey>
      <d:RowKey>myrowkey</d:RowKey>
      <d:Timestamp m:type="Edm.DateTime">2008-09-18T23:46:36.9557508Z</d:Timestamp>
    </m:properties>
  </content>
</entry>

In questo esempio vengono illustrati un URI della richiesta di esempio, le intestazioni della richiesta associate e il corpo della richiesta di un feed JSON.

Request Headers:
x-ms-version: 2013-08-15
Accept-Charset: UTF-8
Content-Type: application/json
If-Match: *
x-ms-date: Wed, 14 Sep 2011 18:10:24 GMT
Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o=
Content-Length: ###
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx

{
   "Address":"Santa Clara",
   "Age":23,
   "AmountDue":200.23,
   "CustomerCode@odata.type":"Edm.Guid",
   "CustomerCode":"c9da6455-213d-42c9-9a79-3e9149a57833",
   "CustomerSince@odata.type":"Edm.DateTime",
   "CustomerSince":"2008-07-10T00:00:00",
   "IsActive":false,
   "NumberOfOrders@odata.type":"Edm.Int64",
   "NumberOfOrders":"255",
   "PartitionKey":"mypartitionkey",
   "RowKey":"myrowkey"
}

Nella risposta sono inclusi un codice di stato HTTP e un set di intestazioni per la risposta.

Un'operazione completata correttamente restituisce il codice di stato 204 (Nessun contenuto).

Per informazioni sui codici di stato, vedere Codici ed errori di stato e Codici di errore del servizio tabelle.

Nella risposta sono incluse le intestazioni seguenti. inoltre, possono essere incluse intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.

 

Intestazione della risposta Descrizione

ETag

Valore ETag per l'entità.

x-ms-request-id

Questa intestazione identifica in modo univoco la richiesta effettuata e può essere utilizzata per risolvere i problemi relativi alla richiesta. Per altre informazioni, vedere Risoluzione dei problemi relativi alle operazioni dell'API.

x-ms-version

Indica la versione del servizio tabelle utilizzata per eseguire la richiesta. Questa intestazione viene restituita per le richieste effettuate nella versione 2009-09-19 e successive.

Date

Valore data/ora UTC generato dal servizio che indica l'ora in cui è stata avviata la risposta.

Response Status:
HTTP/1.1 204 No Content

Response Headers:
Connection: Keep-Alive
x-ms-request-id: 2c085f8f-11a4-4e1d-bd49-82c6bd87649d
Content-Length: 0
Cache-Control: no-cache
Date: Wed, 14 Sep 2011 18:12:54 GMT
ETag: W/"0x5B168C7B6E589D2"
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 2.0;NetFx
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0

Questa operazione può essere eseguita dal proprietario dell'account e da qualsiasi altro utente che utilizza una firma di accesso condiviso con l'autorizzazione di esecuzione di questa operazione.

Quando si aggiorna un'entità, è necessario specificare le proprietà di sistema PartitionKey e RowKey come parte dell'operazione di aggiornamento.

Il valore ETag di un'entità fornisce la concorrenza ottimistica predefinita per le operazioni di aggiornamento. Il valore ETag è opaco e non deve essere letto, né è possibile basarsi su di esso. Prima che venga eseguita un'operazione di aggiornamento, il servizio tabelle verifica che il valore ETag corrente dell'entità sia identico al valore ETag incluso nella richiesta di aggiornamento nell'intestazione If-Match. Se i valori sono identici, il servizio tabelle determina che l'entità non è stata modificata dopo che è stata recuperata e l'operazione di aggiornamento continua.

Se il valore ETag dell'entità è diverso da quello specificato nella richiesta di aggiornamento, l'operazione di aggiornamento ha esito negativo e restituisce il codice di stato 412 (Condizione preliminare non riuscita). Questo errore indica che l'entità è stata modificata nel server dopo che è stata recuperata. Per risolvere questo errore, recuperare nuovamente l'entità e riemettere la richiesta.

Per forzare un'operazione di aggiornamento incondizionale, impostare il valore dell'intestazione If-Match sul carattere jolly (*) nella richiesta. Il passaggio di questo valore all'operazione comporta l'override della concorrenza ottimistica predefinita, di conseguenza eventuali valori ETag non corrispondenti verranno ignorati.

Se l'intestazione If-Match non è inclusa nella richiesta, il servizio restituisce il codice di stato 400 (Richiesta non valida). Anche una richiesta con un formato non corretto può restituire il codice di stato 400. Per altre informazioni, vedere Codici di errore del servizio tabelle.

Se la richiesta specifica una proprietà con un valore null, la proprietà viene ignorata, l'aggiornamento continua e l'entità esistente viene sostituita.

noteNota
È possibile utilizzare questo comportamento per rimuovere una proprietà da un'entità.

Per tipizzare una proprietà in modo esplicito, specificare il tipo di dati OData appropriato impostando l'attributo m:type nella definizione della proprietà nel feed Atom. Per altre informazioni sulla tipizzazione di proprietà, vedere Inserimento e aggiornamento di entità.

Qualsiasi applicazione in grado di autenticare e inviare una richiesta PUT HTTP può aggiornare un'entità.

Per informazioni sull'esecuzione di operazioni di aggiornamento batch, vedere Esecuzione di transazioni di gruppi di entità.

Mostra:
© 2014 Microsoft