Entity Framework - Problem in relationship association 1 to 0..1

2

I'm having an association problem between two tables.

Student and Student tables_Course_Unit.

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 (student_code) with the Id of the student_Course_Unit (Id) table and not with FK (child_code)

I'm starting in MVC 5.

Thank you in advance.

    
asked by anonymous 20.04.2016 / 22:41

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; }
}

So we can associate Aluno with 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 update 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; }
}
    
20.04.2016 / 23:01