Dúvida na lógica de criação de atributo (C-Sharp)

12/03/2017

0

Estou tentando me aprimorar em C#, especificamente no padrão MVC, criei um projeto de uma Loja Virtual mas estou com um problema:

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

Gabriel Moreira

Responder

Post mais votado

13/03/2017

Opa Gabriel, tudo tranquilo por aí?

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

Luis Mesa
Responder

Mais Posts

13/03/2017

Gabriel Moreira

Luis, boa noite.

O terceiro exemplo me pareceu mais adequado, nesse caso não exige colocar a especificação [ForeignKey()] ?


Obrigado!
Responder

14/03/2017

Luis Mesa

Bom dia, Gabriel.

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!
Responder

14/03/2017

Luis Mesa

E não, não é necessário adicionar a Anotação [ForeignKey()], por usar dessa convenção para definir a Chave Estrangeira.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar