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
激活后,点击右上角的Get Started
进入SDS,然后创建一个新的Solution。注意:一个invitation code只能创建一个Solution.
然后就来到了.NET SERVICES和SQL SERVICES的管理界面
点击顶部的Solution Credentials,修改solution的密码。改成一个自己好记的吧:)
好了,现在你已经有了自己好记的Solution名和密码了。
安装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!!
此时文本框里会出现这样一段
在<s:Id>与</s:Id>中间输入Authority的名字,我这了就叫做food了。输入完成后点击 (因为根据上面的映射表,“新建”操作对应的HTTP Verb是"POST")
此时可能会弹出Credentials对话框,输入刚刚设置的Solution名字和密码即可。
如果操作成功,底部的状态框会出现 。如果出现的是 ,说明操作有误,请根据错误提示进行更改。
操作成功后,顶部的地址栏会变成
对了,这就是这个Authority的URI了。上一篇里说了,对这个Authority的所有操作,其实就是对这个URI的HTTP操作。
现在我们来建立两个叫做"fruit"和"vegetable"的Container
点击 ,在<s:Id>和</s:Id>中输入"fruit",此时文本框如下图
地址栏里显示的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 />标签对的名字改为<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,点击 ,修改好后再点击 即可。(PUT对应UPDATE操作) 删除呢?呵,一个硕大的 出现在底部,就不用我说了吧?
接下来我们就可以使用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,点击
此时文本框中就会出现fruit这个Container的内容。简单吧?
让我们循序渐进:
地址栏输入https://food.data.database.windows.net/v1/fruit
查询框输入from e in entities where e.Kind=="Apple" select e,点击,此时文本框中就会展示出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
怎么样?很简单很有趣吧?
“赤手空拳”与SDS“肉搏"到此为止。在下一篇中,我们将使用C#语言,对以上所有的操作进行编程实现,敬请关注。
注:SQL Data Services现已更名为SQL Azure ——2009年7月