Usuário com melhor resposta
Como atualizar registros usando o Entity Framework?

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.
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.
Abraços espero ter ajudado!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(); }
Beleza de Creuza!- Sugerido como Resposta AndreAlvesLimaModerator quinta-feira, 13 de janeiro de 2011 12:23
- Marcado como Resposta Mauro Couto sexta-feira, 14 de janeiro de 2011 03: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
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.
Abraços espero ter ajudado!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(); }
Beleza de Creuza!- Sugerido como Resposta AndreAlvesLimaModerator quinta-feira, 13 de janeiro de 2011 12:23
- Marcado como Resposta Mauro Couto sexta-feira, 14 de janeiro de 2011 03:00
-
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.
-
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