2016-01-20 35 views
0

我正在使用Azure表存儲並有一個表我想查詢行鍵的結束與我有興趣過濾的某些值。這裏是我的代碼:C#天藍色表查詢返回501沒有執行

var query = table.CreateQuery<DynamicTableEntity>().Where(o => o.PartitionKey == somePartitionKey && o.RowKey.EndsWith(string.Format("_{0}", aclId))).AsTableQuery(); 

我然後執行ExecuteQuerySegmentedAsync但出於某種原因拋出以下異常:

A first chance exception of type 'Microsoft.WindowsAzure.Storage.StorageException' occurred in mscorlib.dll

Additional information: The remote server returned an error: (501) Not Implemented.

任何想法,這是爲什麼?我的代碼/查詢有問題會導致它失敗嗎?無論如何,我真的需要一種有效的方式來檢索行鍵以某個值結尾的分區中的所有記錄。

+0

您用於Azure存儲的nuget包和版本是什麼? – juvchan

+0

您的存儲帳戶是以經典還是資源管理器模式創建的? – juvchan

+0

我看到你在查詢中使用了endswith。請注意,Azure表不支持endswith操作符。 –

回答

3

你得到這個錯誤的原因是因爲你試圖執行不受支持的操作。截至今天,Azure Table Service不支持EndsWith查詢運算符。有關支持的LINQ運營商列表,請參閱此鏈接:https://msdn.microsoft.com/en-us/library/azure/dd135725.aspx

在您的方案中,您需要首先下載客戶端上的實體,然後在這些實體上應用EndsWith運算符。

+0

完美的鏈接,謝謝!我對Azure感到失望。在不支持這樣的查詢之間 - 甚至包括簡單的聚合,例如分區中所有實體的計數 - 看起來它們確實限制了性能/效率。有時我懷疑數據存儲機制背後的目的是便宜和「快」,如果你甚至不能真正使用它。 – spoof3r