一,引言

  之前在讲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 控制台应用的更多相关文章

  1. Azure Cosmos DB (三) EF Core 操作CURD

    一,引言 接着上一篇使用 EF Core 操作 Azure CosmosDB 生成种子数据,今天我们完成通过 EF Core 实现CRUD一系列功能.EF Core 3.0 提供了CosmosDB 数 ...

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

    一,引言 上一篇文章中,我们介绍到使用了EF Core 与Cosmos DB SQL API 进行结合开发.同时,大家在开发过程中一定要记得EF Core 不支持Cosmos DB 的迁移.今天我们启 ...

  3. Azure Cosmos DB介绍及演示

    Azure Cosmos DB 是 Microsoft 提供的全球分布式多模型数据库服务.Cosmos DB是一种NoSql数据库,但是它兼容多种API.它支持SQL, MongoDB.Cassand ...

  4. Azure Cosmos DB (一) 入门介绍

    一,引言 今天是国庆.中秋双节房价的第三天,今天抽时间分享一篇关于使用Azure 提供的一项NoSql 服务-----Azure Cosmos DB.就有人问了,我听说过 MongoDB.Redis ...

  5. Azure Cosmos DB (二) SQL API 操作

    一,引言 还记得国庆期间,我们学习了一下关于Azure Cosmos DB 的一些基础知识以及Azure Cosmos DB 的几种支持数据库类型.今天就开始分享一些实战操作,如何通过Azure Po ...

  6. NCF 的Azure Cosmos DB 演示案例

    简介 NCF想必看过我之前发的NCF的文章的同学们都已经很熟悉了 今天我们要来聊一聊的是NCF遇到Azure Cosmos DB后会碰撞出什么样的火花,让我们一起往下看 我们先来说说什么是Azure ...

  7. Azure CosmosDB (10) Azure Cosmos DB体系结构

    <Windows Azure Platform 系列文章目录> Azure Cosmos DB的体系结构分为以下几个部分: 1.Database Accounts Database Acc ...

  8. Azure Cosmos DB 使用费用参考

    之前在学习Cosmos DB 中SQL API(DocumentDB) 的时候,也就是之前做的一些笔记,看到有使用费用的一些介绍,就有兴趣的去了解了下,做了一下简单的总结. 想了解更多或是购买使用的还 ...

  9. azure cosmos db (mongo DB)

    使用.net mongo的操作类操作azure(微软云)cosmosdb时,发现在做delete的操作的时候可以传一个文档对象,但是最后这个文档会解析成具体的sql语句,而当文档特别大时这样就出先了转 ...

随机推荐

  1. Python基础教程分享,视频教程免费下载!

    给大家分享一套我初学Python时看的一套基础教程,是视频教程,免费分享给大家,希望对正在学习Python或者打算学习Python的朋友有帮助哈~~ 废话不多说 为期92天的Python基础教程视频教 ...

  2. .NetCore Docker一次记录

    1:项目添加docker支持 2:定位到项目主目录 按住shift,鼠标右键,打开powershell,输入命令 dotnet publish 此时会在目录 bin\Debug\netcoreapp2 ...

  3. Gromacs命令-Chapter1

    Gromacs的命令非常多,下面我将我最近用到的先总结一下.标题上也写了这只是Chapter1,以后有新的会继续写Chapter2...等等. 下面这个网址http://manual.gromacs. ...

  4. redis-server文件启动cmd一闪而过

    工作上需要在本地装redis,所以就帮别人排查了一个问题,就是redis服务双击了之后不能起来,就是一个黑色的cmd框一闪而过,正常的是这样的: 然而,我当时第一次接触windows上的redis服务 ...

  5. jsp 和servlet基础知识

    1  在tomcat服务器当中,4**表示客户端请求错误,5**表示程序错误 2.request知识参考网址:http://wenku.baidu.com/link?url=wYwTGk8XKrLzA ...

  6. mysql调优从书写sql开始

    理论知识 MySQL 的运行机制 Mysql 的SQL关键字执行顺序 1.MySQL 的优化方案有哪些? MySQL 数据库常见的优化手段分为三个层面:SQL 和索引优化.数据库结构优化.系统硬件优化 ...

  7. Docker与Ceph的分与合

    前言 docker是一个管理工具,在操作系统之上提供了一个新的独立轻环境,好处是本地提供了一个基础镜像,然后基于镜像再运行环境,也可以把环境重新打包为镜像,管理起来类似于git,感觉非常的方便,并且能 ...

  8. Centos7下Jewel版本radosgw服务启动

    前言 本篇介绍了centos7下jewel版本的radosgw配置,这里的配置是指将服务能够正常起来,不涉及到S3的配置,以及其他的更多的配置,radosgw后面的gw就是gateway的意思,也就是 ...

  9. bootstrap-datetimepicker 编辑回显

    官网上居然没给出解决方案....汗 stackoverflow给出了灵感: $("#dateOfManufacture").find("input").val( ...

  10. SpringBoot整合Xxl-Job

    一.下载Xxl-Job源代码并导入本地并运行 Github地址:https://github.com/xuxueli/xxl-job 中文文档地址:https://www.xuxueli.com/xx ...