Entity Framework, performance e uso de índices em cenários de grandes volumes

O Entity Framework é um ORM extremamente completo, que traz diversos recursos como: testabilidade, implementações assincronas(Await e Async), configurações baseada em codigo(code-based configuration), mapeamento para store-procedures, migrations e até interceptores e logs para as consultas.

Porém em cenários como quado configuramos o mapeamento do objeto manualmente, ou mesmo cenários em que o volume de dados ou requisições é grande, olhar e analisar a consulta que o Entity Framework gera é muito importante para indentificar possiveis gargalos ou melhorias. Tenho utilizado o EF com sucesso em várias aplicações, tive alguns problemas que foram gerados por como o banco estava estruturado e como eu fiz a configuração do mapeamento.

Neste post vou mostrar como é possivel analisar a consulta SQL que é gerada pelo EF,  mostrarei também um exemplo prático de como isto foi útil em um problema que tive.

Continue reading

Testes com Moq e Entity Framework Async (EF6)

O Entity Framework possui diversos recursos que facilitam o desenvolvimento, um dos recursos que considero muito importante é a possibilidade de realizar queries de maneira assíncrona (http://msdn.microsoft.com/en-us/data/jj819165.aspx). Escrevi um post mostrando algumas maneiras de implementar testes com Entity Framework (Testes com Moq e Entity Framework (EF6)).

A ideia deste post é mostrar como implementar testes em cenários de queries assíncronas, como no post anterior vou continuar utilizando Moq e terei como base o projeto que publiquei no GitHub: https://github.com/rodolfofadino/TestesComMoqEEntityFramework

Para começar, no LivroService.cs vou criar um método que chamará GetLivrosAtivosAsync, deixando a classe da seguinte maneira:

Continue reading

Testes com Moq e Entity Framework (EF6)

Recentemente estava implementando um projeto utilizando TDD, onde as principais regras de negócios se baseavam em consultas e filtros aplicados ao banco de dados, por exemplo: “retorna todos os descontos ativos (select * from descontos where status=1 and datafim>getdate()”.

Pensando em uma abordagem para garantir a implementação destas diversas regras, acabei optando por utilizar o Entity Framework (EF6) para o acesso aos dados e o Moq como framework de mock.

Moq

O Moq é um framework para mock extremamente poderoso, que ajuda a simular o comportamento e ações de objetos de uma maneira controlada. Com ele é possível simular o retorno de um método de um objeto, e ainda realizar diversos testes como quantidade de get ou set em uma determinada propriedade, ou até mesmo verificar quantas vezes determinado método do objeto foi chamado.

Continue reading

Minha Vida Tech Night: ADO.NET Entity Framework 4.3 for Real Web Applications

Como eu já disse em outro post, trabalhar no Minha Vida é estar o tempo todo alinhado com as mais novas tecnologias e técnicas de desenvolvimento. Para isso sempre investimos e somos incentivados a buscar e disseminar o conhecimento. Durante todo o ano fazemos várias apresentações, treinamentos internos e externos a fim de promover o conhecimento.

Nesta segunda feira 06/08/2012 (18:30) teremos o primeiro Minha Vida Tech Night transmitido online, no qual eu farei uma apresentação sobre ADO.NET Entity Framework 4.3 for Real Web Applications. Continue reading