Esporta (0) Stampa
Espandi tutto

Insert Or Replace Entity

Aggiornamento: febbraio 2014

Tramite l'operazione Insert Or Replace Entity viene sostituita un'entità esistente o ne viene inserita una nuova se non esiste nella tabella. Poiché questa operazione consente anche di inserire o aggiornare un'entità, è nota anche come operazione upsert.

La richiesta Insert Or Replace Entity può essere costruita nel modo seguente. Si consiglia di utilizzare HTTPS. Sostituire i valori seguenti con valori personalizzati:

  • myaccount con l'account di archiviazione

  • mytable con il nome della tabella

  • myPartitionKey e myRowKey con il nome della chiave di partizione e la chiave di riga dell'entità da aggiornare

 

Metodo URI della richiesta Versione HTTP

PUT

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

HTTP/1.1

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 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

Obbligatoria, deve essere impostata sulla 2011-08-18 o versioni successive. 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.

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 l'operazione Insert Or Replace Entity è possibile inviare l'entità da inserire come set di entità OData, che potrebbe essere un formato JSON o un feed Atom. Per altre informazioni, vedere Inserimento e aggiornamento di entità.

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.

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.

Atom: di seguito sono riportate una risposta e una richiesta Atom di esempio:

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

La richiesta viene inviata con le intestazioni seguenti:

x-ms-version: 2013-08-15
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
Content-Type: application/atom+xml
x-ms-date: Tue, 12 Nov 2013 18:10:24 GMT
Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o=
Content-Length: 1135
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 2.0;NetFx

La richiesta viene inviata con il corpo XML seguente:

<?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>2013-11-12T18:09:37.168836Z</updated>
  <author>
    <name />
  </author>
<id>https://myaccount.table.core.windows.net/mytable(PartitionKey='mypartitionkey',RowKey='myrowkey1')</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>myrowkey1</d:RowKey>
      <d:Timestamp m:type="Edm.DateTime">2011-08-30T18:09:37.9557508Z</d:Timestamp>
    </m:properties>
  </content>
</entry>

Dopo l'invio della richiesta viene restituita la risposta seguente:

HTTP/1.1 204 No Content

Connection: Keep-Alive
x-ms-request-id: 2c085f8f-11a4-4e1d-bd49-82c6bd87649d
Content-Length: 0
Cache-Control: no-cache
Date: Tue, 12 Nov 2013 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

JSON: di seguito sono riportate una risposta e una richiesta JSON di esempio:

PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')
The request is sent with the following headers:
x-ms-version: 2013-08-15
Content-Type: application/json
x-ms-date: Tue, 30 Aug 2013 18:10:24 GMT
Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o=
Content-Length: 1135
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx

La richiesta viene inviata con il corpo JSON seguente:

{
   "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"
}

Dopo l'invio della richiesta viene restituita la risposta seguente:

HTTP/1.1 204 No Content

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

L'operazione Insert Or Replace Entity non utilizza l'intestazione If-Match e deve essere chiamata utilizzando la versione 2011-08-18 o successive. Grazie a questi attributi questa operazione può essere distinta dall'operazione Update Entity.

Se l'operazione Insert Or Replace Entity viene utilizzata per sostituire un'entità, eventuali proprietà dell'entità precedente verranno rimosse se la nuova entità non le definisce. Verranno rimosse anche le proprietà con un valore Null.

Quando si chiama l'operazione Insert or Replace Entity, è necessario soddisfare i valori per le proprietà di sistema PartitionKey e RowKey. Insieme, queste proprietà formano la chiave primaria e devono essere univoche all'interno della tabella.

I valori PartitionKey e RowKey devono essere entrambi valori stringa; le dimensioni di ogni valore chiave non possono superare 64 KB. Se si utilizza un valore intero per il valore chiave, è necessario convertirlo in una stringa a larghezza fissa, perché l'ordinamento è canonico. Ad esempio, è necessario convertire il valore 1 in 0000001 per garantire l'ordinamento corretto.

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ò inserire o sostituire un'entità.

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

Vedere anche

Mostra:
© 2014 Microsoft