微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐