none
Como atualizar registros usando o Entity Framework? RRS feed

  • Pergunta

  • Saudações,

    estou a dias tentando realizar a atualização de registros usando EF minha última tentativa foi a seguinte.

     

    veiculo.VUVEINOVOS_LINK = collection.Item("VUVEINOVOS_LINK").Replace(Chr(34), "'")
    
    veiculo.VUVEINOVOS_DESC = collection.Item("VUVEINOVOS_DESC").Replace(Chr(34), "'")
    
    veiculo.VUVEINOVOS_MODELO = collection.Item("VUVEINOVOS_MODELO").Replace(Chr(34), "'") + "teste"
    'veiculo.VUVEINOVOS_ID = collection.Item("VUVEINOVOS_ID")
    veiculo.VUVEINOVOS_PRECO = CInt(collection.Item("VUVEINOVOS_PRECO"))
    veiculo.VUVEINOVOS_FOTOPQ = foto.Replace(Chr(34), "'")
    veiculo.VUVEINOVOS_FOTOGD = foto.Replace(Chr(34), "'")
    
    veiculo.EntityKey = ctx.CreateEntityKey("VUVEINOVOS", veiculo)
    ctx.Attach(veiculo)
    
    ctx.ApplyPropertyChanges("VUVEINOVOS", veiculo)
    ctx.SaveChanges()
    

     

    O pior é que esse código não gera erro, nem nada simplesmente não altera o registro. Já fiz várias tentativas com vários exemplos e nada até agora.

     

     

    quinta-feira, 13 de janeiro de 2011 05:09

Respostas

  • Então Mauro para realizar a atualização do registro vc primeiro precisa capturá-lo e depois fazer a atualização necessária e ai sim salvar o contexto segue abaixo um simples exemplo de como capturá-lo e atualizá-lo.

     using (ImovixEntities ctx = new ImovixEntities())
     {
    //captura o objeto que deseja atualizar
     Imovel obj = ctx.Imovel.SingleOrDefault( x => x.Id == idImovel);
    
    //Atualiza o objeto com os novos dados 
    //Depois de realizar as alterações no objeto é só salvar o contexto
    
     //salva as alterações realizadas no banco de dados
      ctx.SaveChanges();
     }
    
    Abraços espero ter ajudado!
    Beleza de Creuza!
    quinta-feira, 13 de janeiro de 2011 12:18
  • por que você não faz como o pablo disse?

    //Localiza o objeto
        int veiculoID = int.Parse(collection.Item("VUVEINOVOS_ID"));
        VUVEINOVOS veiculo = MeuDataContext.SingleOrDefault(c => c.VUVEINOVOS_ID.Equals(veiculoID));
    
        //Altera os dados
        veiculo.VUVEINOVOS_LINK = collection.Item("VUVEINOVOS_LINK").Replace(Chr(34), "'");
        veiculo.VUVEINOVOS_DESC = collection.Item("VUVEINOVOS_DESC").Replace(Chr(34), "'");
        veiculo.VUVEINOVOS_MODELO = collection.Item("VUVEINOVOS_MODELO").Replace(Chr(34), "'") + "teste";
        veiculo.VUVEINOVOS_PRECO = CInt(collection.Item("VUVEINOVOS_PRECO"));
        veiculo.VUVEINOVOS_FOTOPQ = foto.Replace(Chr(34), "'");
        veiculo.VUVEINOVOS_FOTOGD = foto.Replace(Chr(34), "'");
    
        //Salva no final
        MeuDataContext.SaveChanges();
    


    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    • Marcado como Resposta Mauro Couto sexta-feira, 14 de janeiro de 2011 03:00
    quinta-feira, 13 de janeiro de 2011 16:18
    Moderador

Todas as Respostas

  • Então Mauro para realizar a atualização do registro vc primeiro precisa capturá-lo e depois fazer a atualização necessária e ai sim salvar o contexto segue abaixo um simples exemplo de como capturá-lo e atualizá-lo.

     using (ImovixEntities ctx = new ImovixEntities())
     {
    //captura o objeto que deseja atualizar
     Imovel obj = ctx.Imovel.SingleOrDefault( x => x.Id == idImovel);
    
    //Atualiza o objeto com os novos dados 
    //Depois de realizar as alterações no objeto é só salvar o contexto
    
     //salva as alterações realizadas no banco de dados
      ctx.SaveChanges();
     }
    
    Abraços espero ter ajudado!
    Beleza de Creuza!
    quinta-feira, 13 de janeiro de 2011 12:18
  • Pois é eu acabei esquecendo colocar essa linha no post. Acontece que mesmo assim ele não atualiza.

    Percebi quequando o model foi criado ele entendeu que todos os campos eram chaves e não permitia alteração, fiz a alteração lá permitindo a chave só somente no ID, depois dessa alteração ele passou a dizer que o ID já existia no banco e não poderia ser alterado, é como se ele tivesse tentando inserir um novo registro ao invés de atualizar o que eu preciso.

    quinta-feira, 13 de janeiro de 2011 13:00
  • por que você não faz como o pablo disse?

    //Localiza o objeto
        int veiculoID = int.Parse(collection.Item("VUVEINOVOS_ID"));
        VUVEINOVOS veiculo = MeuDataContext.SingleOrDefault(c => c.VUVEINOVOS_ID.Equals(veiculoID));
    
        //Altera os dados
        veiculo.VUVEINOVOS_LINK = collection.Item("VUVEINOVOS_LINK").Replace(Chr(34), "'");
        veiculo.VUVEINOVOS_DESC = collection.Item("VUVEINOVOS_DESC").Replace(Chr(34), "'");
        veiculo.VUVEINOVOS_MODELO = collection.Item("VUVEINOVOS_MODELO").Replace(Chr(34), "'") + "teste";
        veiculo.VUVEINOVOS_PRECO = CInt(collection.Item("VUVEINOVOS_PRECO"));
        veiculo.VUVEINOVOS_FOTOPQ = foto.Replace(Chr(34), "'");
        veiculo.VUVEINOVOS_FOTOGD = foto.Replace(Chr(34), "'");
    
        //Salva no final
        MeuDataContext.SaveChanges();
    


    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    • Marcado como Resposta Mauro Couto sexta-feira, 14 de janeiro de 2011 03:00
    quinta-feira, 13 de janeiro de 2011 16:18
    Moderador