Azure Cosmos DB (五) .Net Core 控制台应用

一,引言

  之前在讲Azure CosmosDB Core(sql)核心的时候,使用了EF Core 的方式,引用了 “Microsoft.EntityFrameworkCore.Cosmos” 的NuGet包,而今天来个简单的,使用 "Microsoft.Azure.Cosmos" 来操作CosmosDB,通过控制台来写一个简单的Demo。

--------------------我是分割线--------------------

1,Azure Cosmos DB (一) 入门介绍

2,Azure Cosmos DB (二) SQL API 操作

3,Azure Cosmos DB (三) EF Core 操作CURD Demo

4,Azure Cosmos DB (四) 使用EF的SQL API 异地冗余

5,Azure Cosmos DB (五)  .Net Core Console

二,正文

1,安装依赖项

安装对Cosmos DB 的依赖 "Microsoft.Azure.Cosmos"

使用程序包管理控制台进行安装:

Install-Package Microsoft.Azure.Cosmos -Version 3.15.0

其他程序包:

Install-Package Microsoft.Extensions.Configuration -Version 3.1.0
Install-Package Microsoft.Extensions.Configuration.FileExtensions -Version 3.1.0
Install-Package Microsoft.Extensions.Configuration.Json -Version 3.1.0

2,获取CosmosClient,Database,Container 对象

 #region Create CosmosClient
 this.cosmosClient = new CosmosClient(Appsettings.app("CosmosDB",Endpoint"),Appsettings.app(Key")); 
 #endregion

 #region Create CosmosDB
 this.database = await this.cosmosClient.CreateDatabaseIfNotExistsAsync(Appsettings.app(DataBase));
 Console.WriteLine(Created Database:{0} Success\n));
 #region Create Container 
 this.container = this.database.CreateContainerIfNotExistsAsync(Appsettings.app(Container/id"); 
#endregion

3,针对于 Cosmos 的 CRUD 方法

3.1,数据初始化

 1 public async Task InitItem()
 2         {
 3             //Create a usermodel object for the Andersen family
 4             var user1 = new usermodel
 5             {
 6                 Id = 1, 7                 Name = 张无忌 8                 Age = 12 9                 Address = 北京市西城区鲍家街43号10                 Remark = 中央音乐学院"
11             };
12 
13             var user2 = 14 15                 Id = 216                 Name = 令狐冲17                 Age = 2018                 Address = 佛山市南海区灯湖东路6号19                 Remark = 广发商学院20 21 
22             #region Query User1 of '张无忌'
23             var user1s = await QueryItems(user1.Name);
24             #endregion
25 
26 
27             #region Add User1 Item
28             if (user1s.Count <= 0)
29 30                 ItemResponse<usermodel> user1Response = this.container.CreateItemAsync<usermodel>(user1, PartitionKey(user1.Id));
31 
32                 Console.WriteLine(Created Item in database with id:{0} Operation consumed {1} RUs.\n33             }
34             35 
36 
37             #region Query User2 of '令狐冲'
38             var user2s =  QueryItems(user2.Name);
39             40 
41             #region Add User2 Item
42             if (user2s.Count <= 43 44                 ItemResponse<usermodel> user2Response = this.container.CreateItemAsync<usermodel>(user2,1)"> PartitionKey(user2.Id));
45 
46                 Console.WriteLine(47 48             49         }
InitItem

3.2,数据查询

async Task<List<usermodel>> QueryItems(string name)
var sqlQueryText = SELECT * FROM c where 1=1;
 4 
 5             if (!.IsNullOrEmpty(name))
 6  7                 sqlQueryText +=  and c.Name='" + name + ' 8  9 
10             Console.WriteLine(Running query: {0}\nsqlQueryText);
11 
12             QueryDeFinition queryDeFinition =  QueryDeFinition(sqlQueryText);
13 
14             var users = new List<usermodel>();
15             var queryUsers = this.container.GetItemQueryIterator<usermodel>(queryDeFinition);
16 
17 
18             while (queryUsers.HasMoreResults)
19 20                 FeedResponse<usermodel> currentResultSet =  queryUsers.ReadNextAsync();
21                 foreach (usermodel user in currentResultSet)
22                 {
23                     Console.WriteLine(\tRead {0}\n24                     users.Add(user);
25                 }
26 return users;
28         }
QuertItem

3.3 数据修改

1 async Task ModifyItem(2 3              QueryItems(name);
4 
5             var modifyUser = users.FirstOrDefault();
6             modifyUser.Address = 上海市静安区石板街73弄7            var modifyResponse= this.container.ReplaceItemAsync<usermodel>(modifyUser,modifyUser.Id,1)"> PartitionKey(modifyUser.Id));
8             Console.WriteLine(name equal to '"+name+',his family address modify {0}\nsuccess":fail);
9         }
ModifyItem

3.4 数据删除

async Task DeleteItem(var users= 5            var deleteResponse= this.container.DeleteItemAsync<usermodel>(users.First().Id,1)"> PartitionKey(users.First().Id));
6 
7             Console.WriteLine(delete' item'{0}\n" : 8         }
DeleteItem

完整代码请查看文章底部的 github 地址

4,测试结果

首先我们在执行查询操作的代码处打上断点,同时在 main 方法中可以看到我们依次执行的是

1)初始化数据-----> 2) 查看数据-----》3) 修改数据-----》4)删除数据

运行项目,我们回到 Azure Portal 上看到创建好的 "cnbateblogweb-cosmosdb" 的 Azure CosmosDB,点击 “Data Explorer” 查看刚刚初始化好的数据

对比一下控制台打印出来的日志信息,可以看到已经初始化数据库,容器,以及 Item 项。

VS 点击 “F10” 之前先看看名字叫 “令狐冲” 的Item 的地址

F10之后,执行修改操作后,进行查看当前数据,观察是否进行更改了

VS 中继续点击 “F10” 执行删除操作,可以看到在Azure Portal 中已经找不到 “令狐冲” 这条数据了,同样的控制台的日志中显示 “令狐冲” 这条数据已被删除了。

Bingo!!!成功

对于Azure CosmosDB 的增删改查的操作已完成,对于以上操作,大家可以自行进行封装使用。

三,结尾

  今天我们完成了使用 “Microsoft.Azure.Cosmos” 来操作Azure CosmosDB,并且通过一个Demo演示了对 Azure Cosmos DB 进程操作,生产种子数据,以及对数据库中的数据如何做增加删除修改查询等操作。同时也是对Azure CosmosDB 的技术操作的一个回顾。本文所分享内容也存在着很多我自己的一些理解,有理解不到位的,还包含,并且指出不足之处!!!!!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

参考链接https://docs.azure.cn/zh-cn/cosmos-db/

github:https://github.com/yunqian44/Azure.CosmosDB.git

作者:Allen 

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

相关文章

Microsoft云包括了Azure、PowerPlatform、Microsoft365、Git...
《WindowsAzurePlatform系列文章目录》 我们在使用AzureAPI...
微软免费使用一年的Azure虚拟机,默认提供了一个64G的磁盘,...
上篇请访问这里做一个能对标阿里云的前端APM工具(上)样本多...
一年一度的MicrosoftBuild终于来了,带来了非常非常多的新技...