Entity Framework - Relationship Association Problem 1 to 0.. 1

Asked

Viewed 65 times

2

I have a problem of association between two tables.

Student and Student Tables.

Public class Aluno
{
    [Key]
    public int cod_aluno { get; set; }
    ........
    public virtual Aluno_Unidade_Curso Aluno_Unidade_Curso { get; set; }
 }

Public class Aluno_Unidade_Curso
{
    [Key,Column("cod_aluno_unidade_curso",Order =0)]
    public int Id { get; set; }

    [Key,ForeignKey("Aluno")]
    public int cod_aluno { get; set; }
    ........
    public virtual Aluno Aluno { get; set; }
 }


protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Aluno_Unidade_Curso>().HasRequired(auc => auc.Aluno).WithRequiredPrincipal(auc => auc.Aluno_Unidade_Curso); 
 }

When I load the Student object the association equals the Student code (cod_student) with the Student table Id)

I’m starting on MVC 5.

Thanks in advance.

1 answer

2


Your modeling is wrong.

A course unit must be registered elsewhere, for example in an entity UnidadeCurso:

public class UnidadeCurso
{
    [Key]
    public int UnidadeCursoId { get; set; }
    public int CursoId { get; set; }

    [Required]
    public String Nome { get; set; }

    public virtual Curso Curso { get; set; }
}

And Curso:

public class Curso
{
    [Key]
    public int CursoId { get; set; }

    [Required]
    public String Nome { get; set; }

    public virtual IEnumerable<UnidadeCurso> UnidadesCurso { get; set; }
}

Thus, we can associate the Aluno to a UnidadeCurso:

public class AlunoUnidadeCurso
{
    [Key]
    public int AlunoUnidadeCursoId { get; set; }
    public int AlunoId { get; set; }
    public int UnidadeCursoId { get; set; }

    public virtual Aluno Aluno { get; set; }
    public virtual UnidadeCurso UnidaderCurso { get; set; }
}

Of course you will need to upgrade your Aluno:

public class Aluno
{
    [Key]
    public int AlunoId { get; set; }
    ........
    public virtual IEnumerable<AlunoUnidadeCurso> AlunoUnidadesCurso { get; set; }
}

And UnidadeCurso also:

public class UnidadeCurso
{
    [Key]
    public int UnidadeCursoId { get; set; }
    public int CursoId { get; set; }

    [Required]
    public String Nome { get; set; }

    public virtual Curso Curso { get; set; }
    public virtual IEnumerable<AlunoUnidadeCurso> AlunoUnidadesCurso { get; set; }
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.