Datagridview Entity Framework

22/04/2015

0

Boa noite a todos;

Estou começando a estudar sobre o EF. Estou criando um sistema básico para cadastro de produtos com categorias. Consigo cadastrar normalmente as categorias e lista-las. O problema esta na hora de listar os produtos. Ao invés de ao invés de ser exibido o conteudo da minha foreign key, esta aparecendo o nome do projeto.nome da classe da categoria:
[img]http://arquivo.devmedia.com.br/forum/imagem/408066-20150422-193216.jpg[/img]

    public class Categoria
    {
        public int Id { get; set; }
        public string Descricao { get; set; }

        public virtual IEnumerable<Produto> Produtos { get; set; }
    }


    public class Produto
    {
        public int ID { get; set; }
        public string Nome { get; set; }
        public Categoria  Categoria { get; set; }

        public virtual ICollection<ListaDeProduto> ListaDeProdutos { get; set; }
    }


//Metodo Listar Categoria

        public IEnumerable<Produto> Listar()
        {
            var grade = (from g in banco.Produtos
                select g ).ToList();
            return grade;
        }



Código form1
 public void CarregarGrid()
        {
            dgvProduto.DataSource = null;
            dgvProduto.DataSource = appProduto.Listar();



            cbbCategoria.DataSource = appCategoria.Listar();
            cbbCategoria.ValueMember = "Id";
            cbbCategoria.DisplayMember = "Descricao";
        }

  private void btnCadastrar_Click(object sender, EventArgs e)
        {
            int categoriaID = Convert.ToInt32(cbbCategoria.SelectedValue);

            Produto objProduto = new Produto
            {
                Nome = txtProduto.Text,
                Categoria = appCategoria.Listar().First(x=> x.Id == categoriaID )
            };
            appProduto.Salvar(objProduto);
            CarregarGrid();
        }



Sou iniciante em C# e Entity Framework.
Victor Seraphin

Victor Seraphin

Responder

Posts

24/04/2015

Alisson Santos

Victor bom dia.

Poderia verificar como está gravado no banco de dados essa informação?
Pois não vi nada de anormal no seu código.

Se puder mandar esse exemplo para testar aqui e conseguir te auxiliar seria bom.
Responder

30/04/2015

Elessandro Poças

Victor,

Se você estiver usando CODE First a sua classe produto deveria ser da seguinte forma:

public class Produto
    {
        public int ID { get; set; }
        public string Nome { get; set; }
        public int Categoria_Id { get; set; }
        public Categoria  Categoria { get; set; }
 
        public virtual ICollection<ListaDeProduto> ListaDeProdutos { get; set; }
    }



Você vai precisar alterar a forma de como você está fazendo a sua consulta, pesquise sobre tipos anônimos usando Linq to Entity.
Um simples exemplo:
Public IEnumerable<Produto> ConsultaProdutos()
{
         using (seu_contexto ctx = new seu_contexto)
         {
                var consulta = from p in ctx.Produtos.ToList()
                                       select new
                                       {
                                            p.Produto_Id,
                                            p.Descricao,
                                            p.Categoria_Id
                                        };
                 return consulta.ToList();
         }
}



Outra dica: Evite usar chave primarias nomeadas somente como ID, procure ser mas específico no seu caso Produto_ID, pois já tive alguns problemas com este tipo de nomenclatura.

Acesse esse link, lá você vai conseguir sanar muitas dúvidas: http://www.entityframeworktutorial.net/
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar