示例#1
0
        /// <summary>
        /// Listar tudo
        ///  <param name="param">Parametro para ordenação</param>
        ///  <param name="order">Ordem, Asc ou Desc que o parametro será ordenado</param>
        ///  </summary>
        public ICollection <T> ListAll(Expression <Func <T, object> > param = null, Ordem order = Ordem.Asc)
        {
            using (ISession session = NHibernateConfig.OpenSession())
            {
                try
                {
                    var query = QueryOver.Of <T>();

                    if (param != null)
                    {
                        if (order == Ordem.Desc)
                        {
                            query = query.OrderBy(param).Desc();
                        }
                        else
                        {
                            query = query.OrderBy(param).Asc();
                        }
                    }

                    return(query.GetExecutableQueryOver(session).List());
                }
                catch (HibernateException hex)
                {
                    throw hex;
                }
            }
        }
示例#2
0
 /// <summary>
 /// Listar objetos que satisfaçam a condição
 /// </summary>
 public List <T> ListWhere(Expression <Func <T, bool> > where)
 {
     using (ISession session = NHibernateConfig.OpenSession())
     {
         try
         {
             var query = session.Query <T>().Where(where);
             return(query.ToList());
         }
         catch (HibernateException hex)
         {
             throw hex;
         }
     }
 }
示例#3
0
 /// <summary>
 /// Retorna um pedido a partir do id
 /// </summary>
 public Pedido GetPedidoById(int id)
 {
     using (ISession session = NHibernateConfig.OpenSession())
     {
         try
         {
             return(session.Query <Pedido>().Where(pedido => pedido.Id == id)
                    .FetchMany(pedido => pedido.Itens)
                    .ThenFetch(itemPedido => itemPedido.Produto).SingleOrDefault());
         }
         catch (HibernateException hex)
         {
             throw hex;
         }
     }
 }
示例#4
0
 /// <summary>
 /// Retorna os pedidos com itens
 /// </summary>
 public List <Pedido> GetPedidosComItens()
 {
     using (ISession session = NHibernateConfig.OpenSession())
     {
         try
         {
             return(session.Query <Pedido>()
                    .FetchMany(pedido => pedido.Itens)
                    .ThenFetch(itemPedido => itemPedido.Produto)
                    .ToList());
         }
         catch (HibernateException hex)
         {
             throw hex;
         }
     }
 }
示例#5
0
 /// <summary>
 /// Listar um objeto
 /// </summary>
 public T Get(int id)
 {
     using (ISession session = NHibernateConfig.OpenSession())
     {
         try
         {
             return(session.Get <T>(id));
         }
         catch (HibernateException hex)
         {
             throw hex;
         }
         finally
         {
             session.Close();
         }
     }
 }
示例#6
0
 /// <summary>
 /// Deletar um objeto
 /// </summary>
 public void Delete(T modelo)
 {
     using (ISession session = NHibernateConfig.OpenSession())
     {
         try
         {
             using (ITransaction transaction = session.BeginTransaction())
             {
                 session.Delete(modelo);
                 transaction.Commit();
             }
         }
         catch (HibernateException hex)
         {
             throw hex;
         }
         finally
         {
             session.Close();
         }
     }
 }
示例#7
0
        /// <summary>
        /// Listar objetos que satisfaçam a condição e seus relacionamentos
        /// <param name="where">Condição</param>
        /// <param name="eagerParams">Relacionamentos que precisam ser inicializados</param>
        /// </summary>
        public T ListOneWhere(Expression <Func <T, bool> > where, params Expression <Func <T, object> >[] eagerParams)
        {
            using (ISession session = NHibernateConfig.OpenSession())
            {
                try
                {
                    var query = session.QueryOver <T>().Where(where).TransformUsing(Transformers.DistinctRootEntity);

                    if (eagerParams != null && eagerParams.Length > 0)
                    {
                        foreach (var item in eagerParams)
                        {
                            query = query.Fetch(item).Eager;
                        }
                    }

                    return(query.SingleOrDefault());
                }
                catch (HibernateException hex)
                {
                    throw hex;
                }
            }
        }