none
Performance para obtnção de dados EF4 RRS feed

  • Pergunta

  • Olá Pessoal, como estão?

    Estou começando a me aventurar no EF4, daí para conhecer melhor o framework fiz um projeto CRUD afim de conhecer melhor o que o framework oferece.

     

    Uma coisa que deparei ao fazer uma consuta é que o contexto carrega todos os registros que estão na tabela do banco de dados. Diante disso, gostaria de saber se é possível fazer uma consulta em que os dados são obtidos de acordo com a consulta é executada e não carregar todos os dados no contexto e daí fazer o filtro desses dados.

    É possível isso no EF4? Caso não, será necessario utilizar qual meio para contornar isso?

    Muito obrigado pela atenção pessoal.

    Abraços

    segunda-feira, 27 de junho de 2011 13:08

Respostas

  • Carlos, o Entity Framework somente irá copiar todas as linhas de sua tabela para a memoria se você realmente não fizer nenhum filtro na sua consulta,por exemplo:

     exampleEntities ex = new exampleEntities();
    var queryAll = ex.Usuario;
    


    mas, a partir do momento em que eu já coloco filtros na minha consulta, seja através de LINQ ou de LAMBDA EXPRESSIONS, a minha consulta SQL será filtrada e nem toda a tabela irá para a memória. Por exemplo:

    var query = ex.Usuario.Where(c => c.Nome.Contains("Olavo"));
    
    //Rastrando essa consulta através do ObjectQuery:
    string querySQL = ((System.Data.Objects.ObjectQuery)queryAll).ToTraceString();


    Podemos ver que o seguinte comando SQL será executado na base:

    SELECT 
    [Extent1].[Id] AS [Id], 
    [Extent1].[Login] AS [Login], 
    [Extent1].[Senha] AS [Senha], 
    [Extent1].[PerfilId] AS [PerfilId], 
    [Extent1].[DtCriacao] AS [DtCriacao], 
    [Extent1].[Criador] AS [Criador], 
    [Extent1].[Nome] AS [Nome], 
    [Extent1].[DtNascimento] AS [DtNascimento]
    FROM [dbo].[Usuario] AS [Extent1]
    WHERE [Extent1].[Nome] LIKE N'%Olavo%'
    



    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    terça-feira, 28 de junho de 2011 12:37