none
Persistência de classes Poco EF4 (Adicionar e Atualizar) RRS feed

  • Pergunta

  • Srs,

    Já trabalhei com outros ORMs e nomalmente, quando eu mando persistir uma entidade no banco, o comportamento do framework é: se a entidade já existe, atualiza, se não existe, cria uma nova. Certo?

    Estou estudando EF4 para ver se utilizo em um novo projeto e utilizei o seguinte método para Salvar uma entidade:

    context.Clientes.AddObject(cliente);
    context.SaveChanges();
    

    Acreditei que se eu usasse o mesmo codigo acima, mas com uma entidade existente na base, ele ia atualizar, mas isto não ocorreu. Ele criou um novo registro. Aí, utilizei o código abaixo e atualizou:

    context.Clientes.Attach(cliente);
    context.ObjectStateManager.ChangeObjectState(cliente, System.Data.EntityState.Modified);
    context.SaveChanges();
    
    A minha pergunta é: eu realmente preciso utilizar duas formas diferentes para Insert e Delete, ou existe alguma foram de implementar uma só chamada que sabe atualizar ou criar, dependendo se a entidade já existe?

    Desde já agradeço,

     

    Fernando B. Emídio

     

     

    quarta-feira, 15 de dezembro de 2010 04:13

Respostas

  • Fernando vc precisa capturar o cliente que deseja atualizar e ai sim depois vc atualiza segue abaixo um breve exemplo de como capturá-lo.

    //captura o usuário (da coleção de usuários
              //do contexto) que possui o Email igual ao
              //nome do usuário logado no momento
              user = ctx.Usuarios.SingleOrDefault(
                u => u.Email == Page.User.Identity.Name);
    

    ai depois de capturado vc alterar :

      ctx.SaveChanges();
    
    espero ter ajudado!
    Beleza de Creuza!
    quarta-feira, 15 de dezembro de 2010 16:12