Por exemplo, desejo preencher um controle gridview em uma página da web ASP.NET apenas com os dados necessários para o número de linhas exibidas. Como o NHibernate pode suportar isso?
.net
nhibernate
orm
pagination
Raio
fonte
fonte
Você também pode tirar proveito do recurso Futures no NHibernate para executar a consulta para obter a contagem total de registros, bem como os resultados reais em uma única consulta.
Exemplo
Para obter a contagem total de registros, você faz o seguinte:
Uma boa discussão sobre o que o Futures oferece a você está aqui .
fonte
Do NHibernate 3 e superior, você pode usar
QueryOver<T>
:Você também pode querer ordenar explicitamente seus resultados desta forma:
fonte
.Skip(PageNumber * PageSize)
dessa forma, se o tamanho da página for 10, ele nunca recuperará as primeiras 10 linhas. Estou editando para tornar a fórmula correta. Supondo que conceitualmente,PageNumber
não deve ser 0. Deve ser mínimo 1.Quando dados de paginação, há outra maneira de obter resultados digitados de MultiCriteria ou todos fazem o mesmo como eu?
obrigado
fonte
Que tal usar o Linq para NHibernate, conforme discutido neste post de blog de Ayende?
Amostra de código:
E aqui está uma postagem detalhada do blog da equipe do NHibernate sobre Acesso a dados com NHibernate, incluindo a implementação de paginação.
fonte
Muito provavelmente, em um GridView, você desejará mostrar uma fatia de dados mais o número total de linhas (número de linhas) da quantidade total de dados que correspondem à sua consulta.
Você deve usar uma MultiQuery para enviar a consulta Select count (*) e as consultas .SetFirstResult (n) .SetMaxResult (m) ao seu banco de dados em uma única chamada.
Observe que o resultado será uma lista que contém 2 listas, uma para a fatia de dados e outra para a contagem.
Exemplo:
fonte
Eu sugiro que você crie uma estrutura específica para lidar com a paginação. Algo como (sou um programador Java, mas deve ser fácil de mapear):
Não forneci uma implementação, mas você pode usar os métodos sugeridos por @Jon . Aqui está uma boa discussão para você dar uma olhada.
fonte
Você não precisa definir 2 critérios, você pode definir um e cloná-lo. Para clonar os critérios do nHibernate, você pode usar um código simples:
fonte