none
Forma más rápida de encontrar el total de registros de una consulta RRS feed

  • Pregunta

  • Referencia: LinqToEntities

    Estimados: con Ado.net (datareader) yo usaba count() si sabía que mi consulta devolvía relativamente pocos registros, y usaba Set Showplan on/off (devolver la cantidad estimada de registros) si sabía que mi consulta devolvía muchos registros.

    Bien, las preguntas son, en linq to entities:

    1) ¿hay alguna forma más rápida que count(), para traerme el total de registros?

    2) ¿Hay algún equivalente al "Set Showplan on/off" nativo de sql server, para linq?

    3) Mediante código C#, una vez que ya armé mi query en linq (var query = from ....etc.), ¿de qué forma puedo traducir esta sentencia en linq, a un string con la consulta en leguaje sql nativo del sql server?¿existe algun método para hacerlo?

    El objeto de todo ésto, es que necesito lograr paginación eficiente sobre una  serie de tablas que se actualizan constantemente (cambia el total de registros en forma constante), y para cada evento de cambio de página (next, previous, etc) necesito siempre recuperar el total de registros, para poder usarlo en mi skip() take() de linq.

    Gracias desde ya.

    jueves, 29 de agosto de 2013 3:20

Todas las respuestas

  • hola

    analiza

     Loading Related Entities

    donde dice "Using Query to count related entities without loading them"

    como veras puedes armar una query sin ejecutarla, a esa le defiens el count y eso es lo que convertira a sql

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 29 de agosto de 2013 4:11
  • Leandro, gracias por tu respuesta. Pregunta rápida para ver is entendí bien:

    1.     var postCount = context.Entry(blog)
    2.                           .Collection(b => b.Posts)
    3.                           .Query()
    4.                           .Count();

    Aquí lo que realmente optimiza el count(), ¿no es el método Count() en sí mismo, sino colocar la dupla de métodos .Query().Count()?


    jueves, 29 de agosto de 2013 12:32