Dúvida na lógica de criação de atributo (C-Sharp)
12/03/2017
0
Criei uma classe para controlar as vendas dessa loja virtual, em seguida uma FK que aponta diretamente para o cliente, mas na hora de selecionar os produtos não sei como declarar, considerando que uma venda pode ter infinitos produtos, segue um print de como ficou até agora:
public class Venda { [Key] public int VendaId { get; set; } [Required] public DateTime DiaVenda { get; set; } [Required] public DateTime MesVenda { get; set; } [Required] public DateTime AnoVenda { get; set; } [Required] public DateTime HoraVenda { get; set; } [Required] public DateTime DiaSemanaVenda { get; set; } [ForeignKey("Pessoa")] public Pessoa Pessoa { get; set; } }
Estou travado nessa parte faz um tempo, qualquer ajuda agradeço imensamente!
Gabriel Moreira
Post mais votado
13/03/2017
Então, para isso você tem algumas opções! :)
Pessoa, nesse caso, é uma variável de navegação. Ou seja, você ainda precisará criar uma variável, na sua classe Venda, que representa a Chave Estrangeira referente a Classe Pessoa. A seguir coloco algumas formas de solucionar esse problema:
[ForeignKey("Pessoa")] public int PessoaRefId { get; get; } public Pessoa Pessoa { get; set; }
ou
public int PessoaRefId { get; get; } [ForeignKey("PessoaRefid")] public Pessoa Pessoa { get; set; }
ou
public int PessoaId { get; get; } public Pessoa Pessoa { get; set; }
Por convenção, se considera que a Chave Estrangeira terá mesmo nome da Chave Primária da tabela de onde se referencie, considerando que na classe Pessoa a Chave Primária seja PessoaId. Ainda que o nome da Chave Primária da classe Pessoa seja somente Id, usando esse padrão Pessoa como nome para a variável de navegação e PessoaId para a Chave Estrangeira deverá funcionar ao gerar o Banco de Dados com Entity Framework. :)
Quaisquer dúvidas, só responder por aqui!
Abraço
Luis Mesa
Mais Posts
13/03/2017
Gabriel Moreira
O terceiro exemplo me pareceu mais adequado, nesse caso não exige colocar a especificação [ForeignKey()] ?
Obrigado!
14/03/2017
Luis Mesa
Por convenção, é possível usar o nome do campo de navegação Pessoa e a Chave Estrangeira PessoaId e será associado, por padrão. Se na classe Pessoa a Chave Primária é PessoaId, da mesma forma seria associado.
Um abraço!
14/03/2017
Luis Mesa
Clique aqui para fazer login e interagir na Comunidade :)