【问题标题】:Coercing Azure Table Storage TableResult to class将 Azure 表存储 TableResult 强制为类
【发布时间】:2016-04-02 23:30:12
【问题描述】:

我正在编写一个从 Azure 表存储服务中检索实体的方法。我需要将实体作为用户类型返回,而不是作为 TableResult。以下编译,但总是返回 Null:

var partitionKey = "user";

            var retrieveOperation = TableOperation.Retrieve<TableEntity>(partitionKey, userName);
            var result = _table.Execute(retrieveOperation);

            if (result == null)
            {
                return null;
            }

            return result.Result as User;

我假设这是因为从 TableResult 到 User 的转换由于某种原因不起作用。将其转换为 (User)result.Result 实际上会在运行时引发错误。我看过一个在实体列表中使用 Linq 的示例,但是如何转换单个结果?

【问题讨论】:

    标签: c# azure azure-storage azure-table-storage


    【解决方案1】:

    如果您的实体User 继承自TableEntity(或实现ITableEntity):

    public class User : TableEntity { }
    

    您可以指定结果的类型:

    var retrieveOperation = TableOperation.Retrieve<User>(partitionKey, userName);
    

    所以在你的情况下,它看起来像这样:

    var partitionKey = "user";
    var retrieveOperation = TableOperation.Retrieve<User>(partitionKey, userName);
    var result = _table.Execute(retrieveOperation);
    if (result == null)
    {
        return null;
    }
    return result.Result as User;
    

    另一种方法是使用DynamicTableEntity 类:

    var partitionKey = "user";
    // The default result type is DynamicTableEntity
    var retrieveOperation = TableOperation.Retrieve(partitionKey, userName);
    var result = _table.Execute(retrieveOperation);
    if (result == null)
    {
        return null;
    }
    return result.Result as DynamicTableEntity;
    

    【讨论】:

    猜你喜欢
    • 2015-10-31
    • 2020-08-04
    • 2013-08-29
    • 1970-01-01
    • 2022-08-02
    • 2015-07-29
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    相关资源
    最近更新 更多