Creare i documenti
Per creare un nuovo elemento, è prima necessario creare una nuova variabile in codice C# di tipo Prodotto.
Product saddle = new()
{
id = "027D0B9A-F9D9-4C96-8213-C8546C4AAE71",
categoryId = "26C74104-40BC-4541-8EF5-9892F7F03D72",
name = "LL Road Seat/Saddle",
price = 27.12d,
tags = new string[]
{
"brown",
"weathered"
}
};
Si supponga che sia già presente una variabile di tipo Microsoft.Azure.Cosmos.Container denominata container.
In questo caso, è possibile richiamare il metodo CreateItemAsync<> in modo asincrono passando al costruttore il tipo Product e la variabile del nuovo elemento.
await container.CreateItemAsync<Product>(saddle);
Questa chiamata del metodo crea il nuovo elemento, ma non contiene metadati relativi al risultato dell'operazione. In alternativa, è possibile archiviare il risultato dell'operazione in una variabile di tipo ItemResponse<>.
ItemResponse<Product> response = await container.CreateItemAsync<Product>(saddle);
HttpStatusCode status = response.StatusCode;
double requestUnits = response.RequestCharge;
Product item = response.Resource;
Se si usa un blocco try-catch, inoltre, è possibile gestire il tipo CosmosException, che include una proprietà StatusCode per i valori del codice di stato HTTP. È opportuno valutare l'opportunità di inserire nel codice dell'applicazione alcuni codici di stato HTTP comuni:
Codice | Title | Motivo |
---|---|---|
400 | Richiesta non valida | Si è verificato un problema con l'elemento nel corpo della richiesta |
403 | Non consentito | È probabile che il contenitore fosse già completo |
409 | Conflitto | All'elemento del contenitore potrebbe essere già associato un ID |
413 | RequestEntityTooLarge | L'elemento supera le dimensioni massime dell'entità |
429 | TooManyRequests | La richiesta corrente supera il numero massimo di UR/s di cui è possibile effettuare il provisioning per il contenitore |
In questo esempio
try
{
await container.CreateItemAsync<Product>(saddle);
}
catch(CosmosException ex) when (ex.StatusCode == HttpStatusCode.Conflict)
{
// Add logic to handle conflicting ids
}
catch(CosmosException ex)
{
// Add general exception handling logic
}