INSERT COM CHAVE ESTRANGEIRA
Prezados colegas,
Minha dúvida é do tipo que,embora seja simples,
Nenhum curso ou livro de .NET,informa como
Fazer.Pois é um problema que só acontece,quando
Se esta realmente codificando na prática:
O caso:
Tenho um único formulário de cadastro de Funcionários , com apenas poucos
Campos na tela,somente para cadastrar dados do funcionário e seus dependentes.
No Banco,somente duas tabelas:
Funcionario: (CodFunc,DescFunc)
Dependentes.(CodDep, CodFunc DescDep)
Problema:
Preciso fazer um Insert, na tabela Dependentes
Para isto, além dos campos CodDep e DescDep, vou precisar saber o valor de CodFunc (Chave estrangeira).
Como os colegas fazem,quando ao fazer um Insert numa tabela,tem de saber o valor da chave estrangeira de outra???
é claro,que alguém pode dizer,que basta fazer uma consulta,na tabela funcionário,para obter o valor de CodFunc e somente,depois fazer o insert na tabela Dependentes.
Mas,isto não me parece nada profissional,fica mais parecendo um modo de quebrar o galho.
Existe um modo,mais profissional de se resolver isto???
ESCRITO POR CLEVERTON
MARCOS, vamos dar nomes sugestivos, pois outras pessoas podem pesquisar sobre o mesmo assunto, e ficará dificil com titulo nomeados dessa forma. Grato!
Minha dúvida é do tipo que,embora seja simples,
Nenhum curso ou livro de .NET,informa como
Fazer.Pois é um problema que só acontece,quando
Se esta realmente codificando na prática:
O caso:
Tenho um único formulário de cadastro de Funcionários , com apenas poucos
Campos na tela,somente para cadastrar dados do funcionário e seus dependentes.
No Banco,somente duas tabelas:
Funcionario: (CodFunc,DescFunc)
Dependentes.(CodDep, CodFunc DescDep)
Problema:
Preciso fazer um Insert, na tabela Dependentes
Para isto, além dos campos CodDep e DescDep, vou precisar saber o valor de CodFunc (Chave estrangeira).
Como os colegas fazem,quando ao fazer um Insert numa tabela,tem de saber o valor da chave estrangeira de outra???
é claro,que alguém pode dizer,que basta fazer uma consulta,na tabela funcionário,para obter o valor de CodFunc e somente,depois fazer o insert na tabela Dependentes.
Mas,isto não me parece nada profissional,fica mais parecendo um modo de quebrar o galho.
Existe um modo,mais profissional de se resolver isto???
Citação:Tópico Renomeado:
De: NENHUM livro explica isso
Para: insert com chave estrangeira
ESCRITO POR CLEVERTON
MARCOS, vamos dar nomes sugestivos, pois outras pessoas podem pesquisar sobre o mesmo assunto, e ficará dificil com titulo nomeados dessa forma. Grato!
Claro que existe um modo [Ô]profissional[Ô] de se resolver isso. [Ô]Dependentes[Ô] é um objeto [Ô]filho[Ô] de Funcionario. Então você vai criar a classe Funcionario, com suas propriedades básicas(os campos da tabela) e uma outra propriedade [Ô]Dependentes[Ô] que é uma List<T> da classe Dependentes. Na classe Dependentes, o método de gravação deve ter um Overload(assinatura) que recebe o id de funcionário para poder gravar. No meu canal explico isso passo a passo e é praticamente igual ao seu caso.
Eu faço um select e jogo dentro de um combobox os dados que representam a chave estrangeira. Depois quando gravo os dados da entidade pai seleciono o registro no combo correspondente!
Mas estou interessado no que o Kerplunk falou! vou dar uma estudada lá também
Mas estou interessado no que o Kerplunk falou! vou dar uma estudada lá também
Olá amigo, belezinha?
Já chegou a ouvir falar de Mapeamento Objeto Relacional? é basicamente usar Orientação a Objetos para poder representar as tabelas em forma de objetos no seu projeto. Como foi proposto pelo Kerplunk.
Você pode usar o Entity Framework para fazer isso pra você. Consultas SQL para inserção, update, etc... Nunca mais.
Se você não quiser seguir essa dica, existe um jeito menos profissional, mas que dá certo...
Você deve tá carregando esses dados num controle, correto? Supondo que o funcionário seja escolhido através de um ComboBox... Você, ao invés de carregar apenas o nome do funcionário, carregue também o ID relacionado com ele. Uma vez que o ComboBox dá suporte para adicionar objetos.
Mas vale bem a pena iniciar esses novos caminhos rumo ao mapeamento objeto relacional.
Grande abraço!
Já chegou a ouvir falar de Mapeamento Objeto Relacional? é basicamente usar Orientação a Objetos para poder representar as tabelas em forma de objetos no seu projeto. Como foi proposto pelo Kerplunk.
Você pode usar o Entity Framework para fazer isso pra você. Consultas SQL para inserção, update, etc... Nunca mais.
Se você não quiser seguir essa dica, existe um jeito menos profissional, mas que dá certo...
Você deve tá carregando esses dados num controle, correto? Supondo que o funcionário seja escolhido através de um ComboBox... Você, ao invés de carregar apenas o nome do funcionário, carregue também o ID relacionado com ele. Uma vez que o ComboBox dá suporte para adicionar objetos.
Mas vale bem a pena iniciar esses novos caminhos rumo ao mapeamento objeto relacional.
Grande abraço!
Ao Kerplunk:
KerPlunk,fiquei muito interessado em sua sugestãop.Irei pesquisar em seus vÃdeos no youtube
e estudar esta alternativa.
Ao DS2T:
Sua sugestão também é ótima,irei estudar mapeamento relacional.Mas,como preciso resolver isto hoje,não posso
me dar ao luxo de aprender a fazer mapeamentos relacionais hoje.
Ao Accioly:
Acciolly,sua sugestão não é tão sofisticada quanto a dos colegas acima.Mas,vou adotar sua sugestão,pois é uma solução
rápida para o problema(Tenho de resolver isto hoje).Aliás,ja fiz aqui,testei e funcionou.
Muito obrigado a todos:
Tópico encerrado , respostas não são mais permitidas