为什么我在查询TableServiceContext时遇到MissingMethodException?

时间:2011-08-18 14:23:19

标签: linq azure-table-storage missingmethodexception

我正在尝试查询Azure表存储。为此,我使用以下两种方法:

TableServiceContext:

public IQueryable<T> QueryEntities<T>(string tableName) where T : TableServiceEntity
{
    this.ResolveType = (unused) => typeof(T);
    return this.CreateQuery<T>(tableName);
}

使用上述方法的代码:

CloudStorageAccount account = AzureConnector.GetCloudStorageAccount(AppSettingsVariables.TableStorageConnection);

AzureTableStorageContext context = new AzureTableStorageContext(account.TableEndpoint.ToString(), account.Credentials);

// Checks if the setting already exists in the Azure table storage. Returns null if not exists.
var existsQuery = from e in context.QueryEntities<ServiceSettingEntity>(TableName)
                  where e.ServiceName.Equals(this.ServiceName) && e.SettingName.Equals(settingName)
                  select e;

ServiceSettingEntity existingSettginEntity = existsQuery.FirstOrDefault();

上面的LINQ查询生成以下请求url:

http://127.0.0.1:10002/devstoreaccount1/PublicSpaceNotificationSettingsTable()?$filter=(ServiceName eq 'PublicSpaceNotification') and (SettingName eq 'expectiss')

该类中的代码生成以下MissingMethodException:

enter image description here

  • 我查看了Table API支持的LINQ Queries;
  • 查看了几个正在运行的stackoverflow解决方案;
  • 在TableServiceContext上尝试了IgnoreResourceNotFoundException(QueryOperators的用户注释);
  • 尝试在调用first或default(用户注释QueryOperators)之前使用ToList()转换linq查询。

但我不能让它发挥作用。

1 个答案:

答案 0 :(得分:1)

确保您具有“ServerSettingEntity”类的无参数构造函数。继承TableServiceEntity的'DTO'需要一个没有参数的构造函数。