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月
浙公網安備 33010602011771號