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 VerbSDS OperationGETFetch,Query 查詢POSTCreate 新建PUTUpdate 修改DELETEDelete 刪除
好了,夠了,開工! 進入SSDE Explorer!!
圖片看不清楚? 請點擊這裡查看原圖(大圖)。
第一步當然是創建Authority.直接點擊右邊的 按鈕
此時文字方塊裡會出現這樣一段
在<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,包括的屬性如下:
屬性名WeightColorAvailabilityRecordDate類型DecimalStringBooleanDateTime
另一種是Pear,包括的屬性如下
屬性名WeightIsPopularProducingArea類型DecimalBooleanString
現在我們來添加第一個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#語言,對以上所有的操作進行程式設計實現,敬請關注。