Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Relacionamento one to one no Entity no CodeFirst

Bom dia ,

Estou tentando faze o relacionamento de 1 para 1 no CodeFirst mais esta dando erro da forma que fiz na hora de inserir o aluno tenho que inserir a matricula ao mesmo tempo, na Aula só aprendemos relacionamento de 1 para N, poderia me ajudar com relacionamento de 1 para 1

 public class Pessoas
    {

        public int ID { get; set; }
        public string Nome { get; set; }
        public string Sobrenome { get; set; }
        public string CPF { get; set; }
        public string RG { get; set; }
        public virtual Matricula matricula { get; set; }

        public int MatriculaID { get; set; }



    public class Matricula
    {

        public int MatriculaID { get; set; }
        public string Dt_Cad { get; set; }
        public string Dt_Alter { get; set; }
        public virtual Pessoas pessoa { get; set; }
        public int PessoaID { get; set; }
        public virtual Turma turma { get; set; }
        public int TurmaID { get; set; }

        public int SeqMatricula { get; set; }




    }
}
    }
3 respostas
solução!

Olá, Marcos!

Não sei se entendi direito, mas quando você diz "na hora de inserir o aluno tenho que inserir a matricula ao mesmo tempo", é porque você está querendo que a matrícula seja obrigatória ou facultativa na hora de inserir a pessoa? E ocorre o erro, pode colar a exceção aqui no fórum para analisarmos melhor?

Quanto à sua classe de pessoa, sugiro mudar o nome para o singular (de Pessoas para Pessoa).

Você pode ver abaixo um exemplo de como fazer um relacionamento um-para-zero-ou-para-um: dessa forma, um Student pode ser inserido sem um StudentAddress, mas um StudentAddress não pode ser inserido sem um Student:

http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx

public class Student
{
    public Student() { }

    public int StudentId { get; set; }
    public string StudentName { get; set; }

    public virtual StudentAddress Address { get; set; }

}

public class StudentAddress 
{
    [Key, ForeignKey("Student")]
    public int StudentId { get; set; }

    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string City { get; set; }
    public int Zipcode { get; set; }
    public string State { get; set; }
    public string Country { get; set; }

    public virtual Student Student { get; set; }
}

Boa sorte e bons estudos!

Obrigado, Marcelo entendi o conceito quando a gente faz one - to - one eu declaro [Key, ForeignKey("PessoaID")] , antes o erro estava acontecendo porque e não declarava na entidade e deixa o Add-Migration fazer todo o trabalho

Excelente, Marcos! Obrigado por participar do fórum!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software