public virtual async Task <ListaPaginada <T> > RetornaTodos(int pagina, int tamanhoPagina)
 {
     using (ISession session = ConexaoNhibernate.OpenSession())
     {
         return(await session.QueryOver <T>().PaginadoAsync(pagina, tamanhoPagina));
     }
 }
 public virtual async Task <IList <T> > RetornaTodos()
 {
     using (ISession session = ConexaoNhibernate.OpenSession())
     {
         return(await session.QueryOver <T>().ListAsync());
     }
 }
 public virtual async Task <T> RetornaPorId(long id)
 {
     using (ISession session = ConexaoNhibernate.OpenSession())
     {
         return(await session.GetAsync <T>(id));
     }
 }
 public virtual async Task <IList <T> > RetornaPorId(params long[] ids)
 {
     using (ISession session = ConexaoNhibernate.OpenSession())
     {
         return(await session.QueryOver <T>()
                .WhereRestrictionOn(t => t.Id).IsIn(ids)
                .ListAsync());
     }
 }
        public virtual async Task <T> Salvar(T entidade)
        {
            using (ISession session = ConexaoNhibernate.OpenSession())
            {
                using (ITransaction transaction = session.BeginTransaction())
                {
                    await session.SaveOrUpdateAsync(entidade);

                    await transaction.CommitAsync();
                }
            }
            return(entidade);
        }
 public virtual async Task Salvar(params T[] entidades)
 {
     using (ISession session = ConexaoNhibernate.OpenSession())
     {
         using (ITransaction transaction = session.BeginTransaction())
         {
             foreach (T i in entidades)
             {
                 await session.SaveOrUpdateAsync(i);
             }
             await transaction.CommitAsync();
         }
     }
 }