2016-07-07 166 views
1

下面的扩展方法不会在我的ASP.NET Core项目中编译,并且Visual Studio突出显示方法ExecuteQuerySegmentedAsync作为问题。错误(代码下方)引用了我不想要的方法签名。我想要这个hereAzure存储表扩展方法中的ExecuteQuerySegmentedAsync调用错误

internal static class CloudTableExtensions 
{ 
     public static async Task<IList<DynamicTableEntity>> ExecuteQueryAsync(this CloudTable table, 
      TableQuery query, CancellationToken cancellationToken = default(CancellationToken)) 
    { 
     var items = new List<DynamicTableEntity>(); 
     TableContinuationToken token = null; 
     do 
     { 
      var seg = await table.ExecuteQuerySegmentedAsync(query, token, cancellationToken); 

      token = seg.ContinuationToken; 
      items.AddRange(seg); 


     } while (token != null && !cancellationToken.IsCancellationRequested 
      && (query.TakeCount == null || items.Count < query.TakeCount.Value)); 


     return items; 
    } 
} 

的错误是: Error CS0411 The type arguments for method 'CloudTable.ExecuteQuerySegmentedAsync<T, TResult>(TableQuery<T>, EntityResolver<TResult>, TableContinuationToken)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

+0

是否使用.NET核心的最新版本?你正在使用哪个版本的windowsazure.storage? – Thomas

+0

是的我正在使用ASP.NET Core 1.0.0和WindowsAzure.Storage 7.1.3-Preview –

回答

1

WindowsAzure.Storage 7.1.3-Preview NuGet包的ASP.NET核心1.0.0 不包含ExecuteQuerySegmentedAsync功能与此签名。 也许你应该在github repo上为此创建一个问题。

否则,如果您需要通过取消标记,你可以使用this

internal static class CloudTableExtensions 
{ 
    public static async Task<IList<DynamicTableEntity>> ExecuteQueryAsync(this CloudTable table, 
     TableQuery query, CancellationToken cancellationToken = default(CancellationToken)) 
    { 
     var items = new List<DynamicTableEntity>(); 
     TableContinuationToken token = null; 
     do 
     { 
      var seg = 
       await 
        table.ExecuteQuerySegmentedAsync(query, token, new TableRequestOptions(), new OperationContext(), 
         cancellationToken); 

      token = seg.ContinuationToken; 
      items.AddRange(seg); 


     } while (token != null && !cancellationToken.IsCancellationRequested 
       && (query.TakeCount == null || items.Count < query.TakeCount.Value)); 


     return items; 
    } 
}