我正在尝试查询表存储,但是我收到以下错误:
<?xml version =“1.0”encoding =“utf-8”standalone =“yes”?>
<错误 的xmlns = “http://schemas.microsoft.com/ado/2007/08/dataservices/metadata” >
<代码> InvalidInput< /代码>
< message xml:lang =“en-US”>其中一个请求输入不是 有效< /消息>
< /错误>
我使用的代码如下:
public IEnumerable<ShoppingItemEntity> Get(string shoppingRowKey) {
var ctx = getTableServiceContext();
var shoppingItems = ctx.CreateQuery<ShoppingItemEntity>(
Constants.TABLE_STORAGE_SHOPPING_ITEM_TABLE_NAME
).Where(x => x.PartitionKey == string.Empty && x.ShoppingId == shoppingRowKey).AsTableServiceQuery();
return shoppingItems.ToList();
}
private TableServiceContext getTableServiceContext() {
var account = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["DataConnectionString"]);
return account.CreateCloudTableClient().GetDataServiceContext();
}
这里奇怪的是,如果我在没有where子句的情况下运行查询,我就没有错误:
public IEnumerable<ShoppingItemEntity> Get(string shoppingRowKey) {
var ctx = getTableServiceContext();
var shoppingItems = ctx.CreateQuery<ShoppingItemEntity>(
Constants.TABLE_STORAGE_SHOPPING_ITEM_TABLE_NAME
).AsTableServiceQuery();
return shoppingItems.ToList();
}
你认为这里的问题是什么?
答案 0 :(得分:4)
有些文章here和here显示了您对Azure Table存储的类似体验。在处理Azure开发存储时,您确实需要通过插入一些虚拟实体来“说服”表服务提供商您知道自己在做什么。
我相信您确定喜欢这篇文章Azure Table Storage, what a pain in the ass。