Querying using the Entity Framework

1

I'm a beginner in the Entity Framework and soon got a maintenance software that uses Entity.

I need to create a report and do the following SQL query using Entity:

select p.RA, p.Nome, p.Modulo, a.Descricao  from inscricao as i, Participante as p, Atividade as a
where i.ParticipanteId = p.ParticipanteId and 
       i.AtividadeId = a.AtividadeId
order by p.Modulo

And in the Controller I use the following method "tried" to do the search quoted above using Entity.

public ActionResult ParticipantesInscritosAtividade(RelatorioParticipantesInscritosAtividadeVM ViewModel) {
    if (ModelState.IsValid)
    {
        var participantes = db.Inscricoes
                    .Join(db.Participantes, ins => ins.ParticipanteId, pa => pa.ParticipanteId, (ins, pa) => new { ins, pa })
                    .Join(db.Atividades, ins1 => ins1.ins.AtividadeId, atv => atv.AtividadeId, (ins1, atv) => new { ins1, atv })
                    .Select(query => new
                    {
                        ParticipanteId = query.ins1.pa.ParticipanteId,
                        RA = query.ins1.pa.RA,
                        Aluno = query.ins1.pa.Nome,
                        AtividadeId = query.atv.AtividadeId,
                        Atividade = query.atv.Titulo,
                        Modulo = query.ins1.pa.Modulo
                    }).ToList();

       if(participantes.Count() == 0) {
            ViewModel.Mensagens.Add(new MensagemVM { Mensagem = MessageUtils.MESSAGE_NO_REPORT_DATA, TipoMensagem = MensagemVM.TipoMensagemEnum.Warning });
        }
        else
        {
            foreach (var p in participantes)
            {
                 ViewModel.Participantes.Add(new RelParticipantesInscritosAtividadeVM { RA = p.ins1.pa.RA.Value, Nome =  p.ins1.pa.Nome , Modulo = p.ins1.pa.Modulo.v });
            }
        }
    }

    PrepararRelatorioParticipantesInscritosAtividadeViewModel(ViewModel);
    return View(ViewModel);
}

When I do this the ModelState.isValid returns that the object can not receive a null value.

My model looks like this:

public class RelParticipantesInscritosAtividadeVM
{
    [Display(Name = "R.A.")]
    public long RA { get; set; }

    [Display(Name = "Nome")]
    public string Nome { get; set; }

    [Display(Name = "Modulo")]
    public int Modulo { get; set; }
}

There is no required field and the Model.isValid still gives the error.

My SQL is just an example of what I need to do, using Join I performed the query but it is not returning the correct values, I ask for help translating my SQL to Entity,

public class RelatorioParticipantesInscritosAtividadeVM
{
    public RelatorioParticipantesInscritosAtividadeVM()
    {
        this.Participantes = new List<RelParticipantesInscritosAtividadeVM>();
        this.Mensagens = new List<MensagemVM>();

    }

    [DataType(DataType.DateTime)]
    [Display(Name = "Data")]
//    [Required(ErrorMessage = "Campo obrigatório")]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy HH:mm}", ApplyFormatInEditMode = true)]
    [UIHint("DataGeral")]
    public DateTime Data { get; set; }

    [Display(Name = "Período")]
  //  [Required(ErrorMessage = "Campo obrigatório")]
    public Rel2PeriodoEnumVM Periodo { get; set; }
    public SelectList PeriodosList { get; set; }

    [Display(Name = "Curso")]
   // [Required(ErrorMessage = "Campo obrigatório")]
    public string CursoId { get; set; }
    public SelectList CursosList { get; set; }

   [Display(Name = "Atividade")]
  //  [Required(ErrorMessage = "Campo obrigatório")]
    public String AtividadeId { get; set; }
    public SelectList AtividadeList { get; set; }

    [Display(Name = "Termo")]
  //  [Required(ErrorMessage = "Campo obrigatório")]
    public short Termo { get; set; }
    public SelectList TermosList { get; set; }



    public IList<RelParticipantesInscritosAtividadeVM> Participantes { get; set; }
    public IList<MensagemVM> Mensagens { get; set; }
  //  public IList<RelAtividadeVM> Atividade { get; set; }

}

}

As suggested, I created a breakpoint on the requested line but it is stated that the variable does not exist in the current context. Going to the next line (F11) gives this infamous error:

  

The null object must have a value.

     

Description: An unhandled exception occurred during the execution of the   current Web request. Examine the stack trace for   more information about the error and where it originated in the code.

     

Exception Details: System.InvalidOperationException: The null object   should have a value.

     

Source Error:

     

Line 113: {Line 114: Line 115: var errors =   ModelState.Values.SelectMany (v => v.Errors); Line 116: if   (ModelState.IsValid) Line 117: {

    
asked by anonymous 14.09.2017 / 15:36

0 answers