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("CosmosDB", "Key"));
#endregion #region Create CosmosDB
this.database = await this.cosmosClient.CreateDatabaseIfNotExistsAsync(Appsettings.app("CosmosDB", "DataBase"));
Console.WriteLine("Created Database:{0} Success\n", Appsettings.app("CosmosDB", "DataBase"));
#endregion #region Create Container
this.container = await this.database.CreateContainerIfNotExistsAsync(Appsettings.app("CosmosDB", "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 = new UserModel
14 {
15 Id = "2",
16 Name = "令狐冲",
17 Age = 20,
18 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 = await this.container.CreateItemAsync<UserModel>(user1, new PartitionKey(user1.Id));
31
32 Console.WriteLine("Created Item in database with id:{0} Operation consumed {1} RUs.\n", user1Response.Resource.Id, user1Response.StatusCode);
33 }
34 #endregion
35
36
37 #region Query User2 of '令狐冲'
38 var user2s = await QueryItems(user2.Name);
39 #endregion
40
41 #region Add User2 Item
42 if (user2s.Count <= 0)
43 {
44 ItemResponse<UserModel> user2Response = await this.container.CreateItemAsync<UserModel>(user2, new PartitionKey(user2.Id));
45
46 Console.WriteLine("Created Item in database with id:{0} Operation consumed {1} RUs.\n", user2Response.Resource.Id, user2Response.StatusCode);
47 }
48 #endregion
49 }
InitItem
3.2,数据查询

1 public async Task<List<UserModel>> QueryItems(string name)
2 {
3 var sqlQueryText = "SELECT * FROM c where 1=1";
4
5 if (!string.IsNullOrEmpty(name))
6 {
7 sqlQueryText += " and c.Name='" + name + "'";
8 }
9
10 Console.WriteLine("Running query: {0}\n", sqlQueryText);
11
12 QueryDefinition queryDefinition = new 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 = await queryUsers.ReadNextAsync();
21 foreach (UserModel user in currentResultSet)
22 {
23 Console.WriteLine("\tRead {0}\n", user.Name);
24 users.Add(user);
25 }
26 }
27 return users;
28 }
QuertItem
3.3 数据修改

1 public async Task ModifyItem(string name)
2 {
3 var users = await QueryItems(name);
4
5 var modifyUser = users.FirstOrDefault();
6 modifyUser.Address = "上海市静安区石板街73弄";
7 var modifyResponse= await this.container.ReplaceItemAsync<UserModel>(modifyUser, modifyUser.Id, new PartitionKey(modifyUser.Id));
8 Console.WriteLine("name equal to '"+name+"',his family address modify {0}\n", modifyResponse.StatusCode==HttpStatusCode.OK?"success":"fail");
9 }
ModifyItem
3.4 数据删除

1 public async Task DeleteItem(string name)
2 {
3 var users= await QueryItems(name);
4
5 var deleteResponse= await this.container.DeleteItemAsync<UserModel>(users.First().Id, new PartitionKey(users.First().Id));
6
7 Console.WriteLine("delete'" + name + " item'{0}\n", deleteResponse.StatusCode == HttpStatusCode.NoContent ? "success" : "fail");
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 的技术操作的一个回顾。本文所分享的内容也存在着很多我自己的一些理解,有理解不到位的,还包含,并且指出不足之处!!!!!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。
github:https://github.com/yunqian44/Azure.CosmosDB.git
作者:Allen
版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
Azure Cosmos DB (五) .Net Core 控制台应用的更多相关文章
- Azure Cosmos DB (三) EF Core 操作CURD
一,引言 接着上一篇使用 EF Core 操作 Azure CosmosDB 生成种子数据,今天我们完成通过 EF Core 实现CRUD一系列功能.EF Core 3.0 提供了CosmosDB 数 ...
- Azure Cosmos DB (四) 使用EF的SQL API 异地冗余
一,引言 上一篇文章中,我们介绍到使用了EF Core 与Cosmos DB SQL API 进行结合开发.同时,大家在开发过程中一定要记得EF Core 不支持Cosmos DB 的迁移.今天我们启 ...
- Azure Cosmos DB介绍及演示
Azure Cosmos DB 是 Microsoft 提供的全球分布式多模型数据库服务.Cosmos DB是一种NoSql数据库,但是它兼容多种API.它支持SQL, MongoDB.Cassand ...
- Azure Cosmos DB (一) 入门介绍
一,引言 今天是国庆.中秋双节房价的第三天,今天抽时间分享一篇关于使用Azure 提供的一项NoSql 服务-----Azure Cosmos DB.就有人问了,我听说过 MongoDB.Redis ...
- Azure Cosmos DB (二) SQL API 操作
一,引言 还记得国庆期间,我们学习了一下关于Azure Cosmos DB 的一些基础知识以及Azure Cosmos DB 的几种支持数据库类型.今天就开始分享一些实战操作,如何通过Azure Po ...
- NCF 的Azure Cosmos DB 演示案例
简介 NCF想必看过我之前发的NCF的文章的同学们都已经很熟悉了 今天我们要来聊一聊的是NCF遇到Azure Cosmos DB后会碰撞出什么样的火花,让我们一起往下看 我们先来说说什么是Azure ...
- Azure CosmosDB (10) Azure Cosmos DB体系结构
<Windows Azure Platform 系列文章目录> Azure Cosmos DB的体系结构分为以下几个部分: 1.Database Accounts Database Acc ...
- Azure Cosmos DB 使用费用参考
之前在学习Cosmos DB 中SQL API(DocumentDB) 的时候,也就是之前做的一些笔记,看到有使用费用的一些介绍,就有兴趣的去了解了下,做了一下简单的总结. 想了解更多或是购买使用的还 ...
- azure cosmos db (mongo DB)
使用.net mongo的操作类操作azure(微软云)cosmosdb时,发现在做delete的操作的时候可以传一个文档对象,但是最后这个文档会解析成具体的sql语句,而当文档特别大时这样就出先了转 ...
随机推荐
- 鸿蒙之后,小米 Vela 也来了,下一代物联网平台应该是什么?
1. 华为鸿蒙基于jerryscript构建物联网应用框架 2020年9月10日 鸿蒙OS 1.0 正式版发布,面向物联网领域,鸿蒙推出了类web开发架构ACE JS = LiteOS + jerry ...
- MySQL全面瓦解9:查询的排序、分页相关
概述 数据库中的数据直接呈现出来一般不是我们想要的,所以我们上两节演示了如何对数据进行过滤的方法.除了对数据进行过滤, 我们可能还需要对数据进行排序,比如想从列表中了解消费最高的项,就可能需要对金额字 ...
- JavaScript全局变量与局部变量
JavaScript中存储数据值的容器称为变量.根据变量作用域可将变量分为全局变量和局部变量. 全局变量(Global Variable) 拥有全局作用域,在JavaScript代码中任何地方都有定义 ...
- axios封装接口
我们一般都是在做一个大型项目的时候,需要用到很多接口时,我们为了方便使用,就把接口封装起来. 先安装axios命令 :npm install axios --save 那么思路是什么呢? 首先在src ...
- selenium之 定位以及切换frame(iframe)(转)
frame标签有frameset.frame.iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe对selenium定位而言是一样的,seleni ...
- ubuntu安装软件自动交互
在ubuntu下安装软件过程中可能会出现需要你输入密码或者其他的一些交互类的操作,这样在脚本安装的时候就可能出现阻断,这个在ubuntu里面已经考虑到了这个情况,以前我在安装这个的时候,通过的是脚本传 ...
- 如何在所有的mon的损坏情况下将数据恢复如初
本篇主题 在mon无法启动,或者所有的mon的数据盘都损坏的情况下,如何把所有的数据恢复如初 写本章的缘由 在ceph中国的群里有看到一个技术人员有提到,在一次意外机房掉电后,三台mon的系统盘同时损 ...
- sql实现通过父级id查询所有的子集
通过sql实现传入父级id查询出所有的子集 最近刚好有个业务需要这样实现个功能,就是在点击查询列表详情的时候只会传入父级id,而详情得渲染出所有子集,那么做法有很多,可以直接通过代码递归查询去实现, ...
- Python_异常处理、调试
1.try except 机制 # 错误处理 # 一般程序都要用到错误捕获,当没有加且有错误的时候Python解释器会执行错误捕获,且是一层层向上捕获[所以问题点会在最下面] try: print(' ...
- git-新建git用户流程-1
1.输入:https://git-scm.com/ 2.点击try git 4.注册git填写用户名和密码,邮箱,验证邮箱 5.选择免费的版本 6.创建仓库名称 创建成功见截图