VENDITE: 1-800-867-1389

Insert Or Merge Entity

Aggiornamento: aprile 2015

Tramite questa operazione Insert Or Merge Entity è possibile aggiornare un'entità esistente oppure inserirne 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 Merge Entity può essere costruita come segue. È consigliato il protocollo 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

MERGE

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

MERGE

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 Differences Between the Storage Emulator and Azure Storage Services.

Nessuno.

Nella seguente tabella 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 oppure 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

Obbligatorio. Deve essere impostata sulla versione 2011-08-18 o successive. Specifica la versione dell'operazione da usare per questa richiesta. Per altre informazioni, vedere Controllo delle versioni per i servizi Blob, di accodamento e tabelle in Windows 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'uso 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'uso di log per tenere traccia delle richiesta di archiviazione nella registrazione di Azure.

Tramite l'operazione Insert Or Merge Entity è possibile inviare l'entità da inserire come set di entità OData, che potrebbe essere un payload 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 restituisce il codice di stato 204 (No Content).

Per informazioni sui codici di stato, vedere Codici di stato e di errore 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 usata 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 usata 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 usa 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:

MERGE 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='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>myrowkey1</d:RowKey>
    </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:

MERGE 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
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 Merge Entity è basata sull'utilizzo del verbo MERGE e deve essere chiamata utilizzando la 2011-08-18 o versioni successive. L'intestazione If-Match non viene utilizzata. Questi attributi consentono di fare distinzione tra questa operazione e l'operazione Update Entity, sebbene il corpo della richiesta sia lo stesso per entrambe.

Se l'operazione Insert Or Merge Entity viene utilizzata per unire un'entità, eventuali proprietà dell'entità precedente verranno conservate se la richiesta non le definisce o non le include. Verranno conservate anche le proprietà con un valore Null.

Quando si chiama l'operazione Insert or Merge 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 usa 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 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 MERGE HTTP può inserire o aggiornare un'entità.

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

Vedere anche

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.
Mostra:
© 2015 Microsoft