3
respostas

exemplo usado

AULA 05 o titulo está Relacionamentos Um para Muitos no Entity, mas o exemplo usado é um para um

3 respostas

Olá Gerson,

na verdade o exemplo usado é realmente um para muitos, pois do lado da Compra de fato ela tem apenas 1 produto, mas cada produto pode estar em várias Compras. Tanto que na Migration a tabela Compra ela ganha uma coluna ProdutoId, em que os ids dos produtos podem se repetir nesta coluna (um para muitos).

Lucas, obrigado pelo retorno, mas seu conceito de uma para muitos está equivocado, aponto que n exemplo de um para um vc usa um exemplo igual, só queria alertar abraços!

Olá Gerson,

a diferença do um para um do um para muitos no banco de dados é bem sútil, dado que em ambos os cenários a estratégia é criar na tabela do lado 1 uma coluna com uma chave estrangeira para a outra tabela com quem vamos relacionar. O que muda é que no caso do um para um, esta chave estrangeira precisa ser única/unique para evitar repetição do valor.

No caso da Compra e Produto é um relacionamento um para muitos pois a coluna da chave estrangeira ProdutoId em Compra não tem justamente esta restrição unique.

Por exemplo, vamos supor que na tabela Produto temos um registro Pão Francês cujo id é 21. Ai pode acontecer de na tabela Compra, a compra de id 100 tem na coluna ProdutoId o valor 21, ou seja, a centésima compra foi de um pão francês. Da mesma forma, a compra de id 101 também pode ter na coluna ProdutoId o valor 21, então a centésima primeira compra também foi de pão francês.

Já no exemplo usado no um para um, a diferença é que a classe Endereço tem uma propriedade ClienteId, que é tanto sua chave primária quanto sua chave estrangeira pro Cliente. Ou seja, a restrição chave estrangeira cria o relacionamento, enquanto a de chave primária evita que o id do cliente se repita entre os Endereços. Ai sim será um para um.

Segue aqui um link com o tutorial do próprio Entity Framework sobre one to many e este link com um exemplo de one to one. A única diferença no exemplo mostrado neste tutorial para o exemplo do curso é que na classe Produto não adicionamos uma ICollection para Compra como ocorre na classe Standard em relação a Student.