我很遗憾如何在Azure表存储中实现此方法。 (注意:我很陌生)
public IList<string> GetUserConnections(int[] userIds)
{
string[] result = userIds.Select(x => x.ToString()).ToArray();
var queryResult = _table.CreateQuery<ConnectionEntity>().Where(n => result.Contains(n.PartitionKey));
return queryResult.Select(n => n.RowKey).ToList();
}
执行查询时出错。
An exception of type 'System.NotSupportedException' occurred in
Microsoft.WindowsAzure.Storage.dll but was not handled in user code
Additional information: The method 'Contains' is not supported
这是我的ConnectionEntity。
public class ConnectionEntity:TableEntity
{
public ConnectionEntity()
{
}
public ConnectionEntity(int userId, string connectionId)
{
this.PartitionKey = userId.ToString();
this.RowKey = connectionId;
}
}
是否可以执行包含运算符?我似乎无法找到有关此类查询的文档。我应该考虑对分区密钥进行批量查询吗?
答案 0 :(得分:0)
查看代码我认为执行所做操作的唯一方法是读取该类型的所有记录,并针对本地集合执行LINQ查询。只要你有少于几千个这种类型的记录,这将非常快,并且根据这些记录被修改的频率,你可以使用某种本地缓存使后续查询非常快。如果您有太多此类型的记录可行,则可能需要重新考虑您的分区策略或应用程序的这一部分的设计,以便它可以通过某个分区键查询较小的数据子集。 / p>