1. 首先还是按照Azure Storage 的Pkg:

2. 可以下载AzureStorage Explorer 来管理Azure Storage的状态
https://azurestorageexplorer.codeplex.com/

如果是有很多文件要上传到BLOB,建议使用CloudBerry的Azure版本。

测试实体类:

public class Student : TableEntity{public Student(){}public Student(string id, string name, DateTime joinedDate, bool hasGraduated){Id = id;Name = name;JoinDate = joinedDate;HasGraduated = hasGraduated.ToString();RowKey = id;PartitionKey = id;}public string Id { get; set; }public string Name { get; set; }public DateTime JoinDate { get; set; }public string HasGraduated { get; set; }}

需要注意的地方就是要继承自TableEntity.

StorageAccount属性:

private static CloudStorageAccount StorageAccount{get{var creds = new StorageCredentials(AccountName, Key);var account = new CloudStorageAccount(creds, useHttps: true);return account;}}

AccountName与Key需要替换为你自己的。

1. 创建表(TableName根据具体情形替换):

public static void CreateTableIfNotExsit(){CloudTableClient tableClient = StorageAccount.CreateCloudTableClient();// Create the table if it doesn't exist.CloudTable table = tableClient.GetTableReference(TableName);table.CreateIfNotExists();}

2. 插入记录

public static void Insert(Student s){CloudTableClient tableClient = StorageAccount.CreateCloudTableClient();// Create the CloudTable object that represents the "student" table.CloudTable table = tableClient.GetTableReference(TableName);// Create the TableOperation that inserts the entity.TableOperation insertOperation = TableOperation.Insert(s);// Execute the insert operation.table.Execute(insertOperation);}

批量插入 - partitionKey需要一致(PartitionKey是优化查询用的,具体可以看这里: https://msdn.microsoft.com/en-us/library/azure/hh508997.aspx)

/// <summary>/// if want to insert in the same patch must have the same partition key/// </summary>/// <param name="students"></param>public static void Insert(IEnumerable<Student> students){var tableClient = StorageAccount.CreateCloudTableClient();// Create the CloudTable object that represents the "student" table.var table = tableClient.GetTableReference(TableName);// Create the batch operation.var batchOperation = new TableBatchOperation();// Add both entities to the batch insert operation.foreach (var s in students){batchOperation.Insert(s);}// Execute the batch operation.table.ExecuteBatch(batchOperation);}

查询

public static IEnumerable<Student> GetByName(string name){var tableClient = StorageAccount.CreateCloudTableClient();var table = tableClient.GetTableReference(TableName);var query = new TableQuery<Student>().Where(TableQuery.GenerateFilterCondition("Name", QueryComparisons.Equal, name));foreach (Student entity in table.ExecuteQuery(query)){yield return entity;}}

组合条件查询

public static IEnumerable<Student> GetGraduatedStudentsByName(string name, bool graduated){var tableClient = StorageAccount.CreateCloudTableClient();//Create the CloudTable object that represents the "student" table.var table = tableClient.GetTableReference(TableName);// Create the table query.var rangeQuery = new TableQuery<Student>().Where(TableQuery.CombineFilters(TableQuery.GenerateFilterCondition("Name", QueryComparisons.Equal, name),TableOperators.And,TableQuery.GenerateFilterCondition("HasGraduated", QueryComparisons.Equal,graduated ? "True" : "False")));// Loop through the results, displaying information about the entity.foreach (Student entity in table.ExecuteQuery(rangeQuery)){yield return entity;}}

获取单个记录

public static Student Single(string id){CloudTableClient tableClient = StorageAccount.CreateCloudTableClient();// Create the CloudTable object that represents the "student" table.CloudTable table = tableClient.GetTableReference(TableName);TableOperation retrieveOperation = TableOperation.Retrieve<Student>(id, id);// Execute the retrieve operation.var ret = table.Execute(retrieveOperation);if (ret == null){return null;}return (Student)ret.Result;}

修改记录

public static void Update(Student student){var tableClient = StorageAccount.CreateCloudTableClient();// Create the CloudTable object that represents the table.var table = tableClient.GetTableReference(TableName);// Create a retrieve operation that takes a entity.var retrieveOperation = TableOperation.Retrieve<Student>(student.Id, student.Id);// Execute the operation.var retrievedResult = table.Execute(retrieveOperation);// Assign the result to a object.var updateEntity = (Student)retrievedResult.Result;if (updateEntity != null){updateEntity.Name = student.Name;updateEntity.JoinDate = student.JoinDate;updateEntity.HasGraduated = student.HasGraduated;var updateOperation = TableOperation.Replace(updateEntity);// Execute the operation.table.Execute(updateOperation);}}

删除记录

public static void Delete(string id){var tableClient = StorageAccount.CreateCloudTableClient();var table = tableClient.GetTableReference(TableName);var retrieveOperation = TableOperation.Retrieve<Student>(id,id);var retrievedResult = table.Execute(retrieveOperation);var deleteEntity = (Student)retrievedResult.Result;// Create the Delete TableOperation.if (deleteEntity != null){var deleteOperation = TableOperation.Delete(deleteEntity);// Execute the operation.table.Execute(deleteOperation);}}

本文只是为了演示AzureTable的CRUD操作,在具体场景中,不应该使用静态方法,应该是对象。

完整的测试代码:

[TestMethod]public void AzureTable_CRUD_Test(){AzureTableCRUD.CreateTableIfNotExsit();AzureTableCRUD.Insert(new Student("1", "StuA", DateTime.Parse("2015-3-11 12:00:00 PM"), false));AzureTableCRUD.Insert(new Student("2", "StuB", DateTime.Parse("2015-3-11 12:00:00 PM"), false));AzureTableCRUD.Insert(new Student("3", "StuB", DateTime.Parse("2015-3-11 12:00:00 PM"), false));AzureTableCRUD.Insert(new Student("4", "Gra_Stu_A", DateTime.Parse("2011-3-11 12:00:00 PM"), true));AzureTableCRUD.Insert(new Student("5", "Gra_Stu_A", DateTime.Parse("2011-3-11 12:00:00 PM"), true));// - get manyvar stu = AzureTableCRUD.GetByName("StuB").ToList();Assert.IsTrue(stu.Count == 2);Assert.IsTrue(stu[0].Name == "StuB");Assert.IsTrue(stu[1].Name == "StuB");// - get singlevar stuA = AzureTableCRUD.Single("1");Assert.IsTrue(stuA.Name == "StuA");// - combine condition get manyvar graduates = AzureTableCRUD.GetGraduatedStudentsByName("Gra_Stu_A", true).ToList();Assert.IsTrue(graduates.Count == 2);Assert.IsTrue(graduates[0].Id == "4");Assert.IsTrue(graduates[1].Id == "5");AzureTableCRUD.Update(new Student("2","StuB_Modified",DateTime.Parse("2015-4-11 12:00:00"),false ));var stuB = AzureTableCRUD.Single("2");Assert.IsTrue(stuB.Name == "StuB_Modified");Assert.IsTrue(stuB.JoinDate.Month == 4);AzureTableCRUD.Delete("4");var tryGetForth = AzureTableCRUD.Single("4");Assert.IsNull(tryGetForth);}

在Azure Explorer中查看结果:

Windows Azure系列-- Azure Table的CRUD操作相关推荐

  1. Azure Table storage 基本用法 -- Azure Storage 之 Table

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table,其中的 Table 就是本文的主角 Azure Tabl ...

  2. 初码-Azure系列-迁移PHP应用至Azure的一些实践记录和思考

    最近客户在逐步迁移应用从阿里云到Azure,这次又轮到一个PHP+MySQL应用了,顺便也记一下流水账. 需求:迁移部署在阿里云上的ECS服务器(系列2,IO优化+2核4G+50G的SSD云盘+10M ...

  3. wsl 上使用docker_首先通过在WSL和Docker中进行测试,将ASP.NET Core从Windows上的Azure应用服务迁移到Linux

    wsl 上使用docker I updated one of my websites from ASP.NET Core 2.2 to the latest LTS (Long Term Suppor ...

  4. 史上最新最全的来自成都的Azure系列文章,助你上云!老少皆宜,童叟无欺!

     这是成都MVP 张俊森的系列Azure文章.各位尽情收藏吧. 文章 链接 1.Azure虚拟机部署 http://blog.51cto.com/rdsrv/2071039 2.Azure资源组迁 ...

  5. 艾伟:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写

    本系列文章导航 基于.NET平台的Windows编程实战(一)--前言 基于.NET平台的Windows编程实战(二)-- 需求分析与数据库设计 基于.NET平台的Windows编程实战(四)-- 数 ...

  6. Azure机器学习——Azure机器学习介绍

    Azure机器学习介绍 一.什么是Azure机器学习? 二.Azure 机器学习的几个重要概念 工作区(Workspace) 数据存储(Datastore) 计算目标(Compute Targets) ...

  7. SSM框架CRUD操作批量删除批量追加数据(OracleMySQL数据库)

    SSM框架CRUD操作Demo 1.SSM开发环境搭建详见下一章微博 2.定义起始页,基本的超链接完成请求,详见如图 由于时间关系,本人将在本博客中陆续推出高级框架阶段的系列教程,现已经发布如下几篇, ...

  8. vue.js crud_ASP.NET CORE —从零到英雄学习ADO.NET中的CRUD操作

    vue.js crud ADO.NET ASP.NET Core中的CRUD操作 在此ASP.NET Core教程中,您将从一开始就学习在ADO.NET中进行CRUD操作. 本教程将帮助您学习ADO. ...

  9. mybatis 一对多_Springboot整合Mybatis实现级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

最新文章

  1. .NET Core微服务开发服务间调用篇-GRPC
  2. neostrack服务器无响应,捷安特GPS码表NeosTrack试用评测
  3. oracle锁mode,【案例】Oracle dml操作产生TM锁 lmode=6 分析原因和解决办法
  4. 命令行中,变量 date time 格式化设定
  5. JSON在Java中的使用(一)
  6. 第二章 吸取jQuery之选择器和包装集
  7. 高质量的用户体验 推进IT运维向业务服务转变——中国移动通信集团公司
  8. SVN配置花生壳远程访问
  9. GitHub中文项目排行榜
  10. python提取pdf表格数据 无边框_Python使用Tabula提取PDF表格数据
  11. 中国移动一句话 苹果丢掉“两个诺基亚”_-Chaz-_新浪博客
  12. 计算机过程控制系统教材,过程控制系统——高等院校教材
  13. Ubuntu下快捷方式图标存放位置
  14. 懒惰的牛(差分) + 金发姑娘和 N 头牛(差分) + 贝茜放慢脚步(二路排序)(归并排序)
  15. Linux日常运维1 w vmstat top sar nload io free ps tcpdump
  16. 常见snapper.sql脚本使用方法
  17. 在一个excel里面直接批量从谷歌地图抓取经纬度(vba部分)
  18. 连接oracle数据库出现“ORA-12541:TNS:无监听程序”解决方法
  19. 快速全面入门Maven(二)--Maven的生命周期
  20. Zigbee W-Z-09 模块规格书

热门文章

  1. Laplace(拉普拉斯)先验与L1正则化
  2. 《succes can be a lonely road》 【istrangeboy精品英文励志短文系列】之最美英文励志诗《成功是一条孤独之路》英译汉
  3. Android热修复之AndFix
  4. uniapp图片或文件的预览和下载,兼容ios+安卓+浏览器
  5. Ceph分布式存储实战.
  6. discuz 服务器维护,求助:重启论坛服务器后出现的问题
  7. 【技术解析笔记】DDPM解析
  8. 最新史上最权威的Oracle学习路线视频教程(价值2w)
  9. 黑客技术真的能破解手机密码?对发展中的人工智能技术有影响吗?
  10. 51、基于51单片机的GPS定位系统(GSM短信)