none
Cláusula Include em entidades sem relacionamentos RRS feed

  • Pergunta

  • Boa tarde,

    estou desenvolvendo um sistema em MVC onde o banco dados está no MySql e as tabelas não possuem relacionamentos.

    O problema é que eu tenho uma tabela Escola, Professor, Aluno, onde a Escola seria a tabela pai de Professor e Aluno.

    Escola - campos {id, nome...}

    Professor - campos {id, escola_id, ...}

    Aluno - campos {id, escola_id, ...}

    Quando eu busco a tabela Escola, queria trazer as outras através do include, mas dá erro:

    (A specified Include path is not valid. The EntityType '' does not declare a navigation property with the name ''.)

    Qual o problema?

    public partial class Escola
    {
           public int id { get; set; }
           ...
    
           public virtual ICollection<Professor> professor{ get; set; }
           public virtual ICollection<Aluno> aluno{ get; set; }
    }
    
    public partial class Professor
    {
            public int id { get; set; }
            public int escola_id{ get; set; }
            ...
    
            [ForeignKey("escola_id")]
            public virtual Escola Escola{ get; set; }
    }
    
    public partial class Aluno
    {
            public int id { get; set; }
            public int escola_id{ get; set; }
            ...
    
            [ForeignKey("escola_id")]
            public virtual Escola Escola{ get; set; }
    }


    Estou usando o include desta maneira:

    public List<Escola> GetEscola(int[] filtro)
            {
                List<Escola> esc = null;
                using (DBCEntities db = new DBCEntities())
                {
                    if (filtro == null && filtro.Length > 0)
                        esc = db.Escola.ToList();
                    else
                        esc = db.Escola.Include("Aluno").Where(x => !filtro.Contains(x.status)).ToList();
                    
                    
                }
                return pj;
            }

    Alguém poderia me ajudar?

    Abç.


    sexta-feira, 11 de abril de 2014 18:08

Todas as Respostas

  • Aparentemente não está encontrando o caminho NOME, você declarou como TABLE suas classes em seu contexto inseriu essa tabela no seu DbSet<T> ? Olhe esse ex :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.Entity;
    
    namespace Entity6
    {
        public class Contexto : DbContext
        {
           public DbSet<Escola> Escola { get; set; }
           public DbSet<Aluno> Aluno { get; set; }
    
            public Contexto()
                : base("connectionstring")
            {
    
            }
        }
    }
    

    Olhe o exemplo de uma consulta :

    using (var db = new Contexto())
                {
                    var lista = db.Escola.Include("Aluno").Select(s => new { s.ALUNO.ID, s.NOME }).ToList();
                    dataGridView1.DataSource = lista;
    
    
                }
    Espero que lhe ajude.

    sexta-feira, 11 de abril de 2014 19:42