强制 Azure Table 存储 Table 结果到 class
Coercing Azure Table Storage TableResult to class
我正在编写一种从 Azure Table 存储服务中检索实体的方法。我需要 return 实体作为 User 类型而不是 TableResult。以下编译,但总是 returns 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
class:
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;
我正在编写一种从 Azure Table 存储服务中检索实体的方法。我需要 return 实体作为 User 类型而不是 TableResult。以下编译,但总是 returns 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
class:
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;