INSERT COM CHAVE ESTRANGEIRA

MARCOS 01/02/2016 21:43:16
#456877
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???



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!



KERPLUNK 01/02/2016 21:55:47
#456884
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.
ACCIOLLY 01/02/2016 22:03:25
#456889
Resposta escolhida
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
DS2T 01/02/2016 22:46:09
#456897
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!
MARCOS 04/02/2016 08:05:53
#457029

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