• 【Azure Services Platform Step by Step第3篇】赤手空拳玩转 SQL Data Services(SDS,现已更名为SQL Azure)


     

    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月

  • 相关阅读:
    Entity Framework Code-First(17):Database Initialization Strategy
    Entity Framework Code-First(16):Move Configurations
    Entity Framework Code-First(15):Cascade Delete
    Entity Framework Code-First(14):From Existing DB
    Entity Framework Code-First(13):Configure Many-to-Many
    Entity Framework Code-First(12):Configure One-to-Many
    JAVA-初步认识-第六章-封装思想
    JAVA-初步认识-第六章-封装代码示例
    JAVA-初步认识-第六章-引用数据类型参数传递图解
    JAVA-初步认识-第六章-基本数据类型参数传递图解
  • 原文地址:https://www.cnblogs.com/azure/p/1358695.html
Copyright © 2020-2023  润新知