★★★本博客欢迎转载,但请注明版权、原文链接,谢谢。
Memento..
My stories in my way..
posts - 43,comments - 656,trackbacks - 13

 

SDS其实是很友善、很好玩的。这一节我们不会使用任何的编程语言, 流牛木马将带领大家,仅靠SDK里的一个叫做SSDS Explorer小工具来玩转SDS,熟悉和实现上一篇讲述的一些内容。很有趣的哦~

在申请Azure后,经过耐心漫长地等待,你会收到一封叫做“Do Not Delete! Invitation Code to Microsoft .NET Services and Microsoft SQL Services”的邮件。
终于开始了!从邮件中复制出Invitation Code,打开http://portal.ex.azure.microsoft.com/,激活你的SDS

image

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

image

进入SDS,然后创建一个新的Solution。注意:一个invitation code只能创建一个Solution.

image

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

image

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

image

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

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

安装SDK.

打开安装目录下的SSDS Explorer

image

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

image

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

首先要建立一个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!!

image

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

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

image

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

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

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

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

image

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

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

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

image

点击image ,状态栏变成image

地址栏里显示的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

点击右边的image

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

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

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

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

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

apple1的最终外观如下:

image

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

image 

再添加Pear类型的pear1

image 

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

 

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

基本语法如下
from e in entities [where condition] order by [property] select e

运算符和布尔操作符

image

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

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

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

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

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

 

再来。

执行查询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

怎么样?很简单很有趣吧?

“赤手空拳”与SDS“肉搏"到此为止。在下一篇中,我们将使用C#语言,对以上所有的操作进行编程实现,敬请关注。

注:SQL Data Services现已更名为SQL Azure ——2009年7月

posted on 2008-12-19 21:54  流牛木马  阅读(3449)  评论(15编辑  收藏