我正在使用azure表存儲來存儲博文。每篇博文都可以有不同的標籤。 所以我會有三個不同的表格。對azure表的動態查詢
- 一個將存儲博客文章。
- 一個用於存儲標籤
- 一個將存儲在標籤和崗位
所以我的問題是如下的關係,是有可能創造動態搜索queuries?因爲直到運行時我才知道要搜索多少個標籤。 據我所知,你只能使用LINQ查詢天藍色的表格。或者我可以輸入一個字符串查詢,我可以動態更改?
UPDATE
下面是一些例子數據是在博客表
PartitionKey,RowKey,Timestamp,Content,FromUser,Tags
user1, 1, 2012-08-08 13:57:23, "Hello World", "root", "yellow,red"
blogTag表
PartitionKey,RowKey,Timestamp,TagId,TagName
"red", "red", 2012-08-08 11:40:29, 1, red
"yellow", "yellow", 2012-08-08 11:40:29, 2, yellow
關係表
PartitionKey,RowKey,Timestamp,DataId,TagId
1, 1, 2012-08-08 11:40:29, 1, 1
2, 1, 2012-08-08 13:57:23, 1, 2
這些表格的一個用法示例是,例如,當我想用特定標籤獲取所有博客文章時。
- 我不得不從blogTag表
- 有後,我需要在關係表來搜索數據ID
- 最後,我需要尋找博客表博客文章與數據ID查詢標籤識別
我使用LINQ進行查詢,它看起來像下面
CloudTableQuery<DataTag> tagIds = (from e in ctx2.CreateQuery<DataTag>("datatags")
where e.PartitionKey == tags
select e).AsTableServiceQuery<DataTag>();
我想嘎urav Mantri使用過濾器的建議,它的工作原理。但我擔心這種效率會如何。而關於15個離散比較的限制只允許。
您不限於LINQ。最後它是ATS的REST呼叫。但是你可以使用LINQ來創建動態查詢(E.G。State ='WA'或State ='CA')。請提供您在LINQ和ATS設計中無法完成的查詢的示例。我認爲REST API僅限於40個過濾器。 40可能是錯誤的數字,但有一個限制。 – Paparazzi 2012-08-09 14:59:17
多個條件可以是單個過濾器的多個查詢(並行),然後在.NET中執行交集或聯合。爲您的查詢設計PartitionKey和RowKey。 – Paparazzi 2012-08-09 15:08:54
@Blam我更新問題與我用來搜索標籤,以及一些示例表的查詢。我發現這個限制是15或14,因此對breischl的回答 – starcorn 2012-08-09 15:24:18