none
Update com Entity Framework C# RRS feed

  • Pergunta

  • Gostaria de saber como posso dar um Update em apenas um atributo com entity framework

     

    exemplo

     

    Update Pessoa set nome=@nome where id=@id;

     

    algo como o que está acima, só que com entity.

     

    Agradeço desde já.


    Att, Hugo S. Mendes
    domingo, 9 de janeiro de 2011 16:23

Respostas

  • Sim. Basta você retornar na consulta  a entidade que você deseja alterar, mudar a propriedade dela e depois salvar as alterações

    por exemplo:

    ModelContainer1 db = new ModelContainer1();
        Produto p = db.ProdutoSet.Single(c => c.ProdutoID.Equals(1));//Retorna o produto com ID = 1
        p.NomeProduto = "Produto Novo";//Altera o nome do produto
        db.SaveChanges();//Salva mudanças
    


    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    segunda-feira, 10 de janeiro de 2011 11:22
  • Hugo, no seu caso internamente ele teve de procurar a pessoa passada por parametro(select) para poder aplicar as modificações(update) no fim é a mesma coisa. LINQ por si só já utiliza consultas otimizadas, mas se você acha que está tendo problemas de perfomance, você pode optar por exemplo o PLINQ(http://msdn.microsoft.com/en-us/magazine/cc163329.aspx) Consultas em paralelo utilizando o LINQ.

     


    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    • Marcado como Resposta Hugo S. Mendes terça-feira, 11 de janeiro de 2011 18:01
    terça-feira, 11 de janeiro de 2011 17:59

Todas as Respostas

  • Sim. Basta você retornar na consulta  a entidade que você deseja alterar, mudar a propriedade dela e depois salvar as alterações

    por exemplo:

    ModelContainer1 db = new ModelContainer1();
        Produto p = db.ProdutoSet.Single(c => c.ProdutoID.Equals(1));//Retorna o produto com ID = 1
        p.NomeProduto = "Produto Novo";//Altera o nome do produto
        db.SaveChanges();//Salva mudanças
    


    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    segunda-feira, 10 de janeiro de 2011 11:22
  • Mas o fato de ter que dar esse "select" antes, não perde mt em desempenho não?
    Att, Hugo S. Mendes
    terça-feira, 11 de janeiro de 2011 16:55
  • mas Hugo, você não tem como atualizar um dado se você não tiver esse dado antes. não existe perda consideraveis nete processo

    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    terça-feira, 11 de janeiro de 2011 17:14
  • Eu fiz algo desse tipo e funcionou também.

    mas qual que tem melhor desempenho?

    </>

    Pessoa pessoa == listar(3);

    contexto.Pessoa.ApplyCurrentValues(pessoa).Status = true;

    contexto.SaveChanges();

    </>


    Att, Hugo S. Mendes
    terça-feira, 11 de janeiro de 2011 17:48
  • Hugo, no seu caso internamente ele teve de procurar a pessoa passada por parametro(select) para poder aplicar as modificações(update) no fim é a mesma coisa. LINQ por si só já utiliza consultas otimizadas, mas se você acha que está tendo problemas de perfomance, você pode optar por exemplo o PLINQ(http://msdn.microsoft.com/en-us/magazine/cc163329.aspx) Consultas em paralelo utilizando o LINQ.

     


    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    • Marcado como Resposta Hugo S. Mendes terça-feira, 11 de janeiro de 2011 18:01
    terça-feira, 11 de janeiro de 2011 17:59
  • Obrigado Olavo.

    Me ajudou muito.


    Att, Hugo S. Mendes
    terça-feira, 11 de janeiro de 2011 18:01