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 名和密码了。
下载 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!!
此时文本框里会出现这样一段
在 <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"]。
读者可以继续练习更多:
注意:同一个 Kind 的 Entity 可以包含的不同的属性(不推荐)。比如我们可以把 apple1 中的 <Availability /> 属性删除掉,完全没有影响。可以执行以下查询进行测试
from e in entities where e["Availability"]==false && e.Kind=="Apple" select e
怎么样?很简单很有趣吧?
“赤手空拳”与 SDS“肉搏"到此为止。在下一篇中,我们将使用 C# 语言,对以上所有的操作进行编程实现,敬请关注。