技术开发 频道

【第3篇】赤手空拳玩转 SQL Data Services(SDS)

  【IT168 技术文档】SDS 其实是很友善、很好玩的。这一节我们不会使用任何的编程语言, 仅靠 SDK 里的一个叫做 SSDS Explorer 小工具来玩转 SDS。

  在申请 Azure 后,经过耐心漫长地等待,你会收到一封叫做“Do Not Delete! Invitation Code to Microsoft .NET Services and Microsoft SQL Services”的邮件。

  第二篇:Azure Services实例:Service Bus入门实例
  第三篇:Azure Services实例:开发部署Azure留言板
  第四篇:Azure Services实例:使用Blob Storage搭建简单网络硬盘
  第五篇:Azure Services实例:Windows Azure日志与队列的使用
  第六篇:Azure Services实例:实现Windows Azure聊天室
  第七篇:Azure Services实例:在Windows Azure中使用PHP

  终于开始了!从邮件中复制出 Invitation Code,打开 http://portal.ex.azure.microsoft.com/,激活你的 SDS。

 

  激活后,点击右上角的 Get Started。

 

  进入 SDS,然后创建一个新的 Solution。注意:一个 Invitation Code 只能创建一个 Solution。

 

  然后就来到了 .NET SERVICES 和 SQL SERVICES 的管理界面。

 

  点击顶部的 Solution Credentials,修改 Solution 的密码。改成一个自己好记的吧 :)

 

  好了,现在你已经有了自己好记的 Solution 名和密码了。

  下载 SDS 的 SDK http://www.microsoft.com/downloads/details.aspx?FamilyId=0B1FA5C6-EC9D-440B-939E-481DD05F2627&displaylang=en

  安装 SDK。

  打开安装目录下的 SSDS Explorer

 

  在这里我们先复习一下上一篇讲的 ACE 模型。

 

  我们的操作顺序也是根据这一模型来的。

  首先要建立一个 Authority,然后在它下面建立不同的 Container,最后再在 Container 下建立多个同类型或者不同类型的 Entity。

  还是上一篇的例子,与上图对照,我们可以创建一个叫做 "food" 的 Authority,其下包括名为 "fruit" 和 "vegetable" 两个 Container。Container["fruit"] 中包括 3 个实体,分别是 "apple1"、"apple2"、"pear1"。注意,这里我们假设五角星代表 pear,三角形代表 apple。这样,在这个 Container["fruit"] 就包括了两种类型的三个 Entity。同样,在 Container["vegetable"] 中,我们假设圆形是白菜 cabbage,方形是西红柿 tomato,我们又有了 "tomato1", "tomato2", "cabbage1" 三个 entity,它们也属于两种不同类型。

  接着我们在复习一下基本操作与 HTTP Verb 的映射表 HTTP Verb  SDS Operation 
  GET  Fetch、Query 查询 
  POST  Create  新建 
  PUT  Update 修改 
  DELETE  Delete  删除

  好了,够了,开工!进入 SSDE Explorer!!

 

  第一步当然是创建 Authority。直接点击右边的Authority按钮

  此时文本框里会出现这样一段

 

  在 <s:Id> 与 </s:Id> 中间输入 Authority 的名字,我这了就叫做 food 了。输入完成后点击POST (因为根据上面的映射表,“新建”操作对应的 HTTP Verb 是 "POST")

  此时可能会弹出 Credentials 对话框,输入刚刚设置的 Solution 名字和密码即可。

  如果操作成功,底部的状态框会出现 。如果出现的是,说明操作有误,请根据错误提示进行更改。

  操作成功后,顶部的地址栏会变成

 

  对了,这就是这个 Authority 的 URI 了。上一篇里说了,对这个 Authority 的所有操作,其实就是对这个 URI 的 HTTP 操作。

  现在我们来建立两个叫做 "fruit" 和 "vegetable" 的 Container。

  点击Container ,在 <s:Id> 和 </s:Id> 中输入 "fruit",此时文本框如下图

  点击POST,状态栏变成

  地址栏里显示的 URI 是 https://food.data.database.windows.net/v1/fruit,对了,这就是 "fruit" 这个 Container 的 URI。

  现在就是在 fruit 中加入具体的 Entity 了。(vegetable 类似,略)。
我们假设 fruit 中有两种 Entity,一种是 Apple,包括的属性如下:

  属性名  Weight  Color  Availability  RecordDate 
  类型  Decimal  String  Boolean  DateTime

  另一种是 Pear,包括的属性如下

  属性名  Weight  IsPopular  ProducingArea 
  类型  Decimal  Boolean  String

  现在我们来添加第一个 Apple: "apple1"

  由于我们是要在 fruit 这个 container 中插入 Entity,所以操作时请保持URI为https://food.data.database.windows.net/v1/fruit

  点击右边的Entity

  将默认的 <Entity /> 标签对的名字改为 <Apple />。

  在 <s:Id/> 标签对中输入 "apple1"。

  点击右边的属性区,依次添加属性。属性名就是节点标签名字,请注意更改。

  描述属性的节点内有一个叫做 "xsi:type" 的 attribute,表示当前节点的类型。

  如 <Weight xsi:type="x:decimal">1.2</Weight >,定义了一个叫做 Weight 的 String 属性,它的值是 1.2。

  apple1 的最终外观如下:

 

  同样的方法我们可以添加 apple2

 

  再添加 Pear 类型的 pear1

  呵呵,这样就添加完了。如果这个时候我想修改 apple1 呢?只需要在地址栏中输入 https://food.data.database.windows.net/v1/fruit/apple1,点击GET,修改好后再点击PUT即可。(PUT 对应 UPDATE 操作)删除呢?呵,一个硕大的DELETE出现在底部,就不用我说了吧?

  接下来我们就可以使用 LINQ 来玩弄它了!

  基本语法如下

from e in entities [where condition] order by [property] select e

 

  运算符和布尔操作符

 

  比如,我们现在可以在地址栏中输入 https://food.data.database.windows.net/v1/

  在查询框中输入 from e in entities where e.Id=="fruit" select e,点击QUERY

  此时文本框中就会出现 fruit 这个 Container 的内容。简单吧?

  让我们循序渐进:
  地址栏输入 https://food.data.database.windows.net/v1/fruit

  查询框输入 from e in entities where e.Kind=="Apple" select e,点击QUERY,此时文本框中就会展示出 apple1 和 apple2 的内容。

  执行查询 from e in entities where e.Kind=="Apple" && e["Color"]=="Red" select e

  则只能看到 apple2 的内容,因为只有 apple2 的 "Color" 等于 "Red"

  读者走到这里可能有疑问了。为什么是 e.Kind 和 e["Color"] 呢?到底是用 "." 还是用 "[]" 呢?解释一下:对于 Entity 的元数据属性(metadata property),需要使用 ".",如 e.Id, e.Kind;对于普通属性,则使用 "[]",如 e["Color"]。

  读者可以继续练习更多:

  from e in entities where e.Kind=="Apple" && (e["Color"]!="Red"||e["Color"]!="Blue") select e  (使用括号)
  from e in entities where e.Kind=="Apple" && (e["Weight"]>=4) select e (使用表达式)
  from e in entities where (e["Weight"]>=4) select e(多种Kind的Entity可以混合在一起查询)
  from e in entities where e["RecordDate"]>="2008-12-15" select e(使用日期)
  from e in entities select e (取得所有Entity)
  from e in entities where e.Id>"pea" select e (字符串使用比较符号)

  注意:同一个 Kind 的 Entity 可以包含的不同的属性(不推荐)。比如我们可以把 apple1 中的 <Availability /> 属性删除掉,完全没有影响。可以执行以下查询进行测试

  from e in entities where e["Availability"]==false  && e.Kind=="Apple" select e

0
相关文章