Fórum Dúvida na lógica de criação de atributo (C-Sharp) #576831
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
Curtir tópico
+ 0Post 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
Gostei + 1
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!
Gostei + 0
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!
Gostei + 0
14/03/2017
Luis Mesa
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)