Ejemplo n.º 1
0
        // </RunBasicOperationsOnStronglyTypedObjects>

        // <CreateItemsAsync>
        private static async Task <SalesOrder> CreateItemsAsync()
        {
            Console.WriteLine("\n1.1 - Creating items");

            // Create a SalesOrder object. This object has nested properties and various types including numbers, DateTimes and strings.
            // This can be saved as JSON as is without converting into rows/columns.
            SalesOrder salesOrder = GetSalesOrderSample("SalesOrder1");
            ItemResponse <SalesOrder> response = await container.CreateItemAsync(salesOrder, new PartitionKey(salesOrder.AccountNumber));

            SalesOrder salesOrder1 = response;

            Console.WriteLine($"\n1.1.1 - Item created {salesOrder1.Id}");

            // As your app evolves, let's say your object has a new schema. You can insert SalesOrderV2 objects without any
            // changes to the database tier.
            SalesOrder2 salesOrder2 = GetSalesOrderV2Sample("SalesOrder2");
            ItemResponse <SalesOrder2> response2 = await container.CreateItemAsync(
                salesOrder2,
                new PartitionKey(salesOrder2.AccountNumber),
                new ItemRequestOptions()
            {
                // The response will have a null resource. This avoids the overhead of
                // sending the item back over the network and serializing it.
                EnableContentResponseOnWrite = false
            });

            if (response2.Resource != null)
            {
                throw new ArgumentException("Resource should be null");
            }

            Console.WriteLine($"\n1.1.2 - Item created {salesOrder2.Id}");

            // For better performance create a SalesOrder object from a stream.
            SalesOrder salesOrderV3 = GetSalesOrderSample("SalesOrderV3");

            using (Stream stream = Program.ToStream <SalesOrder>(salesOrderV3))
            {
                using (ResponseMessage responseMessage = await container.CreateItemStreamAsync(stream, new PartitionKey(salesOrderV3.AccountNumber)))
                {
                    // Item stream operations do not throw exceptions for better performance
                    if (responseMessage.IsSuccessStatusCode)
                    {
                        SalesOrder streamResponse = FromStream <SalesOrder>(responseMessage.Content);
                        Console.WriteLine($"\n1.1.2 - Item created {streamResponse.Id}");
                    }
                    else
                    {
                        Console.WriteLine($"Create item from stream failed. Status code: {responseMessage.StatusCode} Message: {responseMessage.ErrorMessage}");
                    }
                }
            }

            return(salesOrder);
        }
Ejemplo n.º 2
0
        private static async Task CreateItemsAsync()
        {
            Console.WriteLine("\n1.1 - Creating items");

            // Create a SalesOrder object. This object has nested properties and various types including numbers, DateTimes and strings.
            // This can be saved as JSON as is without converting into rows/columns.
            SalesOrder salesOrder = GetSalesOrderSample("SalesOrder1");
            await container.Items.CreateItemAsync(salesOrder.AccountNumber, salesOrder);

            // As your app evolves, let's say your object has a new schema. You can insert SalesOrderV2 objects without any
            // changes to the database tier.
            SalesOrder2 newSalesOrder = GetSalesOrderV2Sample("SalesOrder2");
            await container.Items.CreateItemAsync(newSalesOrder.AccountNumber, newSalesOrder);
        }
        // </RunBasicOperationsOnStronglyTypedObjects>

        // <CreateItemsAsync>
        private static async Task <SalesOrder> CreateItemsAsync()
        {
            Console.WriteLine("\n1.1 - Creating items");

            // Create a SalesOrder object. This object has nested properties and various types including numbers, DateTimes and strings.
            // This can be saved as JSON as is without converting into rows/columns.
            SalesOrder salesOrder = GetSalesOrderSample("SalesOrder1");
            ItemResponse <SalesOrder> response = await container.CreateItemAsync(salesOrder, new PartitionKey(salesOrder.AccountNumber));

            SalesOrder salesOrder1 = response;

            Console.WriteLine($"\n1.1.1 - Item created {salesOrder1.Id}");

            // As your app evolves, let's say your object has a new schema. You can insert SalesOrderV2 objects without any
            // changes to the database tier.
            SalesOrder2 newSalesOrder            = GetSalesOrderV2Sample("SalesOrder2");
            ItemResponse <SalesOrder2> response2 = await container.CreateItemAsync(newSalesOrder, new PartitionKey(newSalesOrder.AccountNumber));

            SalesOrder2 salesOrder2 = response2;

            Console.WriteLine($"\n1.1.2 - Item created {salesOrder2.Id}");

            // For better performance create a SalesOrder object from a stream.
            SalesOrder salesOrderV3 = GetSalesOrderSample("SalesOrderV3");

            using (Stream stream = Program.ToStream <SalesOrder>(salesOrderV3))
            {
                using (ResponseMessage responseMessage = await container.CreateItemStreamAsync(stream, new PartitionKey(salesOrderV3.AccountNumber)))
                {
                    // Item stream operations do not throw exceptions for better performance
                    if (responseMessage.IsSuccessStatusCode)
                    {
                        SalesOrder streamResponse = FromStream <SalesOrder>(responseMessage.Content);
                        Console.WriteLine($"\n1.1.2 - Item created {streamResponse.Id}");
                    }
                    else
                    {
                        Console.WriteLine($"Create item from stream failed. Status code: {responseMessage.StatusCode} Message: {responseMessage.ErrorMessage}");
                    }
                }
            }

            return(salesOrder);
        }