我正在尝试查询 Azure 表存储。为此,我使用以下两种方法:
表服务上下文:
public IQueryable<T> QueryEntities<T>(string tableName) where T : TableServiceEntity
{
this.ResolveType = (unused) => typeof(T);
return this.CreateQuery<T>(tableName);
}
使用上述方法的代码:
CloudStorageAccount account = AzureConnector.GetCloudStorageAccount(AppSettingsVariables.TableStorageConnection);
AzureTableStorageContext context = new AzureTableStorageContext(account.TableEndpoint.ToString(), account.Credentials);
// Checks if the setting already exists in the Azure table storage. Returns null if not exists.
var existsQuery = from e in context.QueryEntities<ServiceSettingEntity>(TableName)
where e.ServiceName.Equals(this.ServiceName) && e.SettingName.Equals(settingName)
select e;
ServiceSettingEntity existingSettginEntity = existsQuery.FirstOrDefault();
上面的 LINQ 查询生成以下请求 url:
http://127.0.0.1:10002/devstoreaccount1/PublicSpaceNotificationSettingsTable()?$filter=(ServiceName eq 'PublicSpaceNotification') and (SettingName eq 'expectiss')
类中的代码生成以下 MissingMethodException:
- 我查看了 Table API 支持的LINQ 查询;
- 查看了几个有效的 stackoverflow 解决方案;
- 在 TableServiceContext 上尝试了 IgnoreResourceNotFoundException (QueryOperators的用户评论);
- 在调用第一个或默认值( QueryOperators的用户注释)之前,尝试使用 ToList() 转换 linq 查询。
但我不能让它工作。