1

我正在尝试查询表存储,但出现以下错误:

<?xml version="1.0" encoding="utf-8" Standalone="yes"?>

<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">

<code>无效输入</code>

<message xml:lang="en-US">其中一个请求输入无效。</message>

</错误>

我使用的代码如下:

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();
}

你认为这里的问题是什么?

4

1 回答 1

4

这里有文章,这里展示了你在 Azure 表存储方面的类似体验。在处理 Azure 开发存储时,您确实需要通过插入一些虚拟实体来“说服”表服务提供商您知道自己在做什么。

我相信你肯定喜欢这篇文章Azure 表存储,真是让人头疼

于 2012-06-10T17:24:04.923 回答