NHibernate – Exemplo utilizando CreateSQLQuery

Imagine que você possui uma classe chamada User e deseja realizar uma consulta utilizando sql com o nhibernate. Podemos para isso, utilizar o método CreateSQLQuery, onde passamos uma consulta sql normal, como “SELECT * FROM users” e obtemos o resultado. Vamos aos exemplos:

    public class User
    {
        public virtual Guid Id { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }
        public virtual string Nick { get; set; }
        public virtual string Email { get; set; }
    }

Podemos realizar a consulta da seguinte maneira:

using (ISession session = NHibernateHelper.OpenSession())
{
    var query = "SELECT {u.*} FROM seu_schema.users as u;";
    var results = session.CreateSQLQuery(query).List();
}

O problema desta consulta, é que List() nos retornará um object[] no lugar de uma lista de User. Mas nós podemos mostrar para o NHibernate que a consulta que nós estamos realizando deve retornar uma lista de User, e não um array de object. Para isso, fazemos o seguinte:

using (ISession session = NHibernateHelper.OpenSession())
{
    var query = "SELECT {u.*} FROM seu_schema.users as u;";
    var results = session.CreateSQLQuery(query).List()
                    .AddEntity("u", typeof(User))
                    .List<User>();
}

Basta informar que o nosso alias ‘u’ é referente a nossa classe User e pronto, o nhibernate agora poderá nos retornar uma lista de User!

Por hoje é só, abraço 😉

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s