Program.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading.Tasks;
  4. using Microsoft.Azure.Cosmos;
  5. using Microsoft.Azure.Cosmos.Fluent;
  6. using Microsoft.Extensions.Configuration;
  7. namespace CosmosDB3Test
  8. {
  9. class Program
  10. {
  11. static async Task Main(string[] args)
  12. {
  13. //IConfiguration configuration = new ConfigurationBuilder()
  14. // .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
  15. // .Build();
  16. string constr = "AccountEndpoint=https://192.168.8.128:8081/;AccountKey=ddwAeGSf8Lsf1kxPXmdqnyzzi3CkJ0KW2BTPZ7Zq1N7qbJic5j7AaQ+WbF86F3rnzuDgGM1yg8O7BUFo93iA8w==;";
  17. await Program.InitializeContainers(constr);
  18. //await Program.WithCustomSerializerAsync(constr);
  19. //await Program.WithSerializerOptionsAsync(constr);
  20. //CosmosClientOptions options = new CosmosClientOptions()
  21. //{
  22. // AllowBulkExecution = true,
  23. // Serializer = new CustomSerializer( new JsonSerializerOptions()),
  24. //};
  25. //CosmosClient cosmosClient = new CosmosClient("https://192.168.8.128:8081",
  26. // "ddwAeGSf8Lsf1kxPXmdqnyzzi3CkJ0KW2BTPZ7Zq1N7qbJic5j7AaQ+WbF86F3rnzuDgGM1yg8O7BUFo93iA8w==", options);
  27. //var database = await cosmosClient.CreateDatabaseIfNotExistsAsync("TEAMModelOS");
  28. //var container = await database.Database.CreateContainerIfNotExistsAsync("CoreSchool", "/areaCode");
  29. //Console.WriteLine("Created Container: {0}\n", container.Container.Id);
  30. //var sqlQueryText = "SELECT * FROM c WHERE 1=1 ";
  31. //Console.WriteLine("Running query: {0}\n", sqlQueryText);
  32. //QueryDefinition queryDefinition = new QueryDefinition(sqlQueryText);
  33. //FeedIterator<School> queryResultSetIterator = container.Container.GetItemQueryIterator<School>(queryDefinition);
  34. //List<School> list = new List<School>();
  35. //while (queryResultSetIterator.HasMoreResults) {
  36. // FeedResponse<School> currentResultSet = await queryResultSetIterator.ReadNextAsync();
  37. // foreach (School family in currentResultSet)
  38. // {
  39. // list.Add(family);
  40. // Console.WriteLine("\tRead {0}\n", family);
  41. // }
  42. //}
  43. //Console.WriteLine("Hello World!");
  44. }
  45. static async Task WithCustomSerializerAsync(string configuration)
  46. {
  47. CosmosClient client = new CosmosClientBuilder(configuration)
  48. .WithApplicationName("OnDotNetRocks")
  49. .WithCustomSerializer(new TextJsonSerializer())
  50. .Build();
  51. ModelTextJson model = new ModelTextJson()
  52. {
  53. TheIdentifier = Guid.NewGuid().ToString(),
  54. DescriptiveTitle = "With custom System.Text.Json serializer!"
  55. };
  56. Container container = client.GetContainer("OnDotNet", "episode1serializer");
  57. ItemResponse<ModelTextJson> createdItem = await container.CreateItemAsync(model);
  58. Console.WriteLine($"Used custom serializer to create item {createdItem.Resource.TheIdentifier}");
  59. }
  60. static async Task WithSerializerOptionsAsync(string configuration)
  61. {
  62. CosmosClient client = new CosmosClientBuilder(configuration)
  63. .WithApplicationName("OnDotNetRocks")
  64. .WithSerializerOptions(new CosmosSerializationOptions()
  65. {
  66. IgnoreNullValues = true,
  67. PropertyNamingPolicy = CosmosPropertyNamingPolicy.CamelCase
  68. })
  69. .Build();
  70. ModelJsonNet model = new ModelJsonNet()
  71. {
  72. Id = Guid.NewGuid().ToString(),
  73. DescriptiveTitle = "With customized JSON.Net!"
  74. };
  75. Container container = client.GetContainer("OnDotNet", "episode1serializer");
  76. ItemResponse<ModelJsonNet> createdItem = await container.CreateItemAsync(model);
  77. Console.WriteLine($"Used serializer options to create item {createdItem.Resource.Id}");
  78. }
  79. static async Task InitializeContainers(string configuration)
  80. {
  81. CosmosClient client = new CosmosClientBuilder(configuration)
  82. .WithApplicationName("OnDotNet")
  83. .WithCustomSerializer(new SystemTextJsonCosmosSerializer(new System.Text.Json.JsonSerializerOptions()))
  84. .Build();
  85. Database database = await client.CreateDatabaseIfNotExistsAsync("OnDotNet");
  86. await database.CreateContainerIfNotExistsAsync("episode1serializer", "/id");
  87. var sqlQueryText = "SELECT * FROM c WHERE 1=1 ";
  88. Console.WriteLine("Running query: {0}\n", sqlQueryText);
  89. QueryDefinition queryDefinition = new QueryDefinition(sqlQueryText);
  90. Container container = client.GetContainer("OnDotNet", "episode1serializer");
  91. // Container container = await database.CreateContainerIfNotExistsAsync("episode1serializer", "/areaCode");
  92. ItemResponse<ModelTextJson> queryResultSetIterator =await container.ReadItemAsync<ModelTextJson>("1317cebb-f821-4877-80b2-48e03e6c6e48", new PartitionKey ("1317cebb-f821-4877-80b2-48e03e6c6e48"));
  93. List <ModelTextJson> list = new List<ModelTextJson>();
  94. var a = queryResultSetIterator.Resource;
  95. // IEnumerable<ModelTextJson> schools = queryResultSetIterator.ReadNextAsync().Result.Resource;
  96. // Console.WriteLine(queryResultSetIterator.ReadNextAsync().Result);
  97. }
  98. }
  99. }