Usuário com melhor resposta
Copiar registro entre tabelas

Pergunta
-
Opa a todos,
Pessoal tenho 2 tabelas identicas, tabela1 e tabela2. preciso alterar o valor de um campo e depois copiar todo o conteudo da tabela2 para a tabela1.
Melhor explicando eu preciso fazer um update de um valor de um campo na tabela2 e depois inlcuir todos os registro na tabela1. Isto é na tabela um terão nos registro não serao updates.
Como eu faco isto no LINQ to identity? Estou usando o framework 4.0 com o VB.net.
Obrigado
- Editado Joao Nivaldo quinta-feira, 2 de fevereiro de 2012 21:36 mais informacao
Respostas
-
OLha o endereco é um campo da tabela2.
Consegui resolver assim
Logo abaixo do for each eu coloquei, item = new item() ai ele reiniciou a lista e deu certinho.
Obrigado a todos.
- Marcado como Resposta Joao Nivaldo sexta-feira, 3 de fevereiro de 2012 13:05
Todas as Respostas
-
Olá João,
Esses dados que vêm da tabela2 para a tabela1 devem manter os mesmos valores da PRIMARY KEY, ou novos valores podem ser gerados?
Fiquei em dúvida sobre a parte de qual registro deve ser atualizado.
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique -
-
Olá João,
Veja se isto ajuda:
1 - Primeiro vc terá de criar um método que converta uma classe Tabela2 para Tabela1, provavelmente vai se parecer com algo do tipo:
public void Tabela1 Parse(Tabela2 tabela) { Tabela1 returnValue = new Tabela1; <br/> returnValue.Id = 0; returnValue.Propriedade1 = tabela.Propriedade1; returnValue.Propriedade2 = tabela.Propriedade2; returnValue.Propriedade3 = tabela.Propriedade3; returnValue.Propriedade4 = tabela.Propriedade4; return returnValue; }
2 - E o método de inclusão ficará assim:
public void Salvar(IEnumerable<Tabela2> itens) { DataContext contexto = new DataContext(); foreach (var item in itens) { Tabela1 novoItem = Parse(item); contexto.Tabelas1.InsertOnSubmit(novoItem); } contexto.SubmitChanges(); }
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique -
OLha como eu fiz e nao da certo.
Imports Dados ... Public Function Grava(codigo as integer) as boolean dim dados as new EF_dados dim item as new orcitens dim itens as new itens itens = (from tab in dados.itens where tab.codigo = codigo select tab).tolist for each i in itens item.nome = i.nome item.endereco = i.endereco dados.addtoorcintes(item) dados.savechanges() next return true end function
Fiz assim e da erro quando vai inserir o segundo valor diz que a chave primaria ja existe. Verifique na depuração que o valor que ele pega paraq o ID apos o SAvechanges ele não zera novamente quando vou incluir o segundo registro. Ja tentei colocar o item.ID=0 mas não funcionou.
Tentei colocar o savechanges() fora fo For each mas ai ele so grava o ultimo.
Obrigado
-
Olá João,
E se vc fizer assim?
Public Function Grava(codigo as integer) as boolean dim dados as new EF_dados dim item as new orcitens dim itens as new itens itens = (from tab in dados.itens where tab.codigo = codigo select tab).tolist for each i in itens item.Id = 0 item.nome = i.nome item.endereco = i.endereco next dados.InsertAllOnSummit(itens) dados.savechanges() return true end function
Essa propriedade Endereco é uma String ou uma classe?
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique -
OLha o endereco é um campo da tabela2.
Consegui resolver assim
Logo abaixo do for each eu coloquei, item = new item() ai ele reiniciou a lista e deu certinho.
Obrigado a todos.
- Marcado como Resposta Joao Nivaldo sexta-feira, 3 de fevereiro de 2012 13:05