我正在尝试按照以下教程从Azure存储表中接收一些值。
检索分区中的所有实体 - https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-how-to-use-dotnet
我收到两个错误,如下所示,我无法弄清楚如何纠正它们。
我80%确定问题与第二个错误无关,因为我的模型是非抽象类型,带有公共无参数构造函数。
“AzureStorageTableEntites”类型不能用作类型参数 泛型类型或方法中的“TElement” “CloudTable.ExecuteQuery(TableQuery, TableRequestOptions,OperationContext)'。没有拳击转换 或者从'AzureStorageTableEntites'输入参数转换 'Microsoft.WindowsAzure.Storage.Table.ITableEntity'。
和
'AzureStorageTableEntites'必须是带有public的非抽象类型 无参数构造函数,以便将其用作参数'TElement' 在泛型类型或方法中 “CloudTable.ExecuteQuery(TableQuery, TableRequestOptions,OperationContext)'
错误表明调用方法的这一部分存在问题:
// Print fields.
foreach (AzureStorageTableEntities entity in table.ExecuteQuery<AzureStorageTableEntities>(query))
{
}
更具体地说,这一部分:
table.ExecuteQuery<AzureStorageTableEntities>(query)
我的模型包括:
public class AzureStorageTableEntities : TableEntity
{
public AzureStorageTableEntities() { }
public bool MiJobsMessageQueueToggle { get; set; }
public bool DeadLetterQueueToggle { get; set; }
public bool ServiceBusQueueToggle { get; set; }
public bool MiJobsMessageAgeToggle { get; set; }
public DateTime SpecificCheckTime { get; set; }
public int HourlyCheckInternalToggle { get; set; }
public bool MiJobsExceptionLogToggle { get; set; }
public bool SpecificCheckTimeToggle { get; set; }
}
通话方式:
private void GetStorageTableValues<AzureStorageTableEntities>()
{
// Retrieve the storage table name.
var tableName = CloudConfigurationManager.GetSetting("AzureConfigTableName");
// Retrieve the storage account from the connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the table client.
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
// Create the CloudTable object that represents the storage table.
CloudTable table = tableClient.GetTableReference(tableName);
TableQuery<AzureStorageTableEntities> query = new TableQuery<AzureStorageTableEntities>()
.Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "Key"));
// Print fields.
foreach (AzureStorageTableEntities entity in table.ExecuteQuery<AzureStorageTableEntities>(query))
{
}
}
答案 0 :(得分:1)
似乎是一个错字问题。您复制的错误说AzureStorageTableEntites与您复制的类称为AzureStorageTableEntities。您复制的类AzureStorageTableEntities
看起来不错,它已经通过其基类实现ITableEntity
,具有无参数ctor并且它是非抽象的。如果你修正了错字并使用那个课你应该很高兴。还使用ExecuteQuery的通用版本
答案 1 :(得分:0)
问题是方法签名中的泛型类型。一旦我删除了这一切一切按预期工作。
private void GetStorageTableValues<AzureStorageTableEntities>()
改为此。
private void GetStorageTableValues()