예제 #1
0
        public static async Task Main(string[] args)
        {
            using (CosmosClient client = new CosmosClient(_endpointUri, _primaryKey))
            {
                Database  database  = client.GetDatabase(_databaseId);
                Container container = database.GetContainer(_containerId);

                List <Food> foods = new Bogus.Faker <Food>()
                                    .RuleFor(p => p.Id, f => (-1 - f.IndexGlobal).ToString())
                                    .RuleFor(p => p.Description, f => f.Commerce.ProductName())
                                    .RuleFor(p => p.ManufacturerName, f => f.Company.CompanyName())
                                    .RuleFor(p => p.FoodGroup, f => "Energy Bars")
                                    .Generate(10000);

                int pointer = 0;
                while (pointer < foods.Count)
                {
                    var parameters = new dynamic[] { foods.Skip(pointer) };
                    StoredProcedureExecuteResponse <int> result = await container.Scripts.ExecuteStoredProcedureAsync <int>("bulkUpload", new PartitionKey("Energy Bars"), parameters);

                    pointer += result.Resource;
                    await Console.Out.WriteLineAsync($"{pointer} Total Items\t{result.Resource} Items Uploaded in this Iteration");
                }

                Console.WriteLine("Execution paused for verification. Press any key to continue to delete.");
                Console.ReadKey();

                bool resume;
                do
                {
                    string query      = "SELECT * FROM foods f WHERE f.foodGroup = 'Energy Bars'";
                    var    parameters = new dynamic[] { query };
                    StoredProcedureExecuteResponse <DeleteStatus> result = await container.Scripts.ExecuteStoredProcedureAsync <DeleteStatus>("bulkDelete", new PartitionKey("Energy Bars"), parameters);

                    await Console.Out.WriteLineAsync($"Batch Delete Completed.\tDeleted: {result.Resource.Deleted}\tContinue: {result.Resource.Continuation}");

                    resume = result.Resource.Continuation;
                }while (resume);
            }
        }