c# - 将 Azure 表存储 TableResult 强制转换为类

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

我正在编写一种从 Azure 表存储服务检索实体的方法。我需要将实体作为 User 类型而不是 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 的示例,但是如何转换单个结果?

最佳答案

如果您的实体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;

关于c# - 将 Azure 表存储 TableResult 强制转换为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36379896/

相关文章:

azure - 无法连接到 Azure 文件共享驱动器,使用映射驱动器无法连接,我也添加了端口 445

java - 从 Power BI 获取 accessToken,无需 GUI 身份验证

azure - 如何使用Azure Pipelines将桌面应用程序部署到物理服务器?

azure - Sitecore 9 - 负载测试结果出现 502 错误

Azure webjobs "invalid container name"间歇性错误

http - Azure blob 文件下载链接

c# - 在 Kinect 中测量

c# - 单元测试私有(private) Setter 问题(C#)

c# - 如何获得不依赖于操作系统的唯一机器 GUID?

C# 正则表达式匹配示例