Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

356
Vistas
Azure Table Storage CreateQuery en .NET Core

Estoy transfiriendo mi biblioteca de clases existente que apunta a .NET Framework 4.6.2 a .NET Core 1.1.

Parece que algunos de los métodos que están disponibles en la versión de .NET Framework no están en .NET Core. Dos de estos métodos son table.CreateQuery y table.ExecuteQuery .

Aquí hay una función existente que me está dando un error para CreateQuery:

 public T Get<T>(string partitionKey, string rowKey, string tableName) where T : ITableEntity, new() => getTable(tableName).CreateQuery<T>().Where(r => r.PartitionKey == partitionKey && r.RowKey == rowKey).FirstOrDefault();

¿Cómo creo una consulta en .NET Core?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

De acuerdo con esta pregunta: ¿ Faltan métodos síncronos para dotnet core?, el soporte de NetCore/Netstandard aún no incluye la implementación de sincronización de las API.

Dado que CreateQuery y ExecuteQuery son todos métodos de sincronización, por lo que no pudimos usarlos en .NET Core, solo puede usar ExecuteQuerySegmentedAsync,TableQuery, Fluent API y manejar el token de continuación que devuelve. Más detalles, puede consultar los siguientes códigos:


Actualizar:

 public static void Main(string[] args) { var result = Get<BookTest3>("Aut_Fantasy", "Cert-0000000020", "DifferenetPartitionTest"); Console.Write(result.PartitionKey); Console.Read(); } public static T Get<T>(string partitionKey, string rowKey, string tableName) where T : ITableEntity, new() { CloudTable table = ConnectToTable(tableName); TableQuery<T> employeeQuery = new TableQuery<T>().Where( TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey), TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThan, rowKey)) ).Take(1); var re = new T(); TableContinuationToken continuationToken = null; do { Task<TableQuerySegment<T>> employees = table.ExecuteQuerySegmentedAsync(employeeQuery, continuationToken); TableQuerySegment<T> employeess = employees.Result; re= employeess.FirstOrDefault(); continuationToken = employeess.ContinuationToken; } while (continuationToken != null); return re; }

Espero que esto pueda darte algunos consejos.


Código de actualización:

 public static void Main(string[] args) { var tas = Get<BookTest3>("Aut_Fantasy", "Cert-0000000020", "DifferenetPartitionTest"); var result = tas.Result; Console.Write(result.PartitionKey); Console.Read(); } public async static Task<T> Get<T>(string partitionKey, string rowKey, string tableName) where T : ITableEntity, new() { //new T(); CloudTable table = ConnectToTable(tableName); TableQuery<T> employeeQuery = new TableQuery<T>().Where( TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey), TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThan, rowKey)) ).Take(1); var re = new T(); TableContinuationToken continuationToken = null; do { var employees = await table.ExecuteQuerySegmentedAsync(employeeQuery, continuationToken); re = employees.FirstOrDefault(); continuationToken = employees.ContinuationToken; } while (continuationToken != null); return re; }
about 4 years ago · Santiago Trujillo Denunciar

0

Agregaré estos prácticos métodos de extensión a esta publicación :)

 public static async System.Threading.Tasks.Task<IEnumerable<DynamicTableEntity>> ExecuteQueryAsync(this CloudTable table, TableQuery query) { TableContinuationToken token = null; var retVal = new List<DynamicTableEntity>(); do { var results = await table.ExecuteQuerySegmentedAsync(query, token); retVal.AddRange(results.Results); token = results.ContinuationToken; } while (token != null); return retVal; } public static async System.Threading.Tasks.Task<IEnumerable<T>> ExecuteQueryAsync<T>(this CloudTable table, TableQuery<T> query) where T : ITableEntity, new() { TableContinuationToken token = null; var retVal = new List<T>(); do { var results = await table.ExecuteQuerySegmentedAsync(query, token); retVal.AddRange(results.Results); token = results.ContinuationToken; } while (token != null); return retVal; }

Le devuelven la misma funcionalidad pero con ExecuteQueryASYNC como nombre del método

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda