none
como definir chave no Entity RRS feed

  • Pergunta

  • Pessoal tudo bem?

    Estou fazendo uma aplicação usando EF ctp5, quando eu tento gravar, eu recebo essa mensagem

    System.Data.Edm.EdmEntityType: : EntityType 'Area' has no key defined. Define the key for this EntityType.

    e outras mensagens como esta relacionada as outras tabelas.

    vlw galera pela ajuda

    grande abraço


    Ricardo Soares

    quinta-feira, 13 de dezembro de 2012 14:22

Respostas

  • Ricardo, você adicionou a referência System.ComponentModel.DataAnnotations ao Projeto?

    Tente também colocar o atributo com o Namespace completo:

    public class Area
        {
            [System.ComponentModel.DataAnnotations.Key]
            public int Codigo { get; set; }
            public string Nome { get; set; }
        }

    Abs.
    Nalin

    • Sugerido como Resposta Fabiano Nalin sexta-feira, 14 de dezembro de 2012 14:36
    • Marcado como Resposta ricardosoares1rj sábado, 15 de dezembro de 2012 15:26
    quinta-feira, 13 de dezembro de 2012 18:19

Todas as Respostas

  • Olá Ricardo!

    Fica difícil lhe ajudar com tão poucas informações. De qualquer forma segue alguns links que me ajudaram e poderão lhe ajudar também nesse maravilhoso mundo do EF5:

    MVPs blog:
    http://carloscds.net/
    http://ferhenriquef.com/

    Vídeos:
    http://www.youtube.com/watch?feature=player_detailpage&v=lFthQksjCm8
    http://www.youtube.com/playlist?list=PLE94A660890783ADF&feature=g-user-u

    Abs.
    Nalin

    quinta-feira, 13 de dezembro de 2012 15:20
  • obrigado fabiano, me perdoe, vou detalhar.

    eu to usando o EF ctp5 e o template poco é gerado pelo EF 5 DBContext Generator

    todas as minhas tabelas, os campos chaves eu usei o nome Codigo.

    quando eu tento salvar um registro, eu recebo a mensagem de erro que postei acima.

    O que eu entendi, é que o EF, não conseguiu identificar quais são os campos primary key.

    as classe geradas estão assim:

    namespace MDA.Biblioteca.Persistencia
    {
        using System;
        using System.Collections.Generic;
        using System.ComponentModel.DataAnnotations;
    
        
        public partial class GCD
        {
            public GCD()
            {
                this.Estatistica = new HashSet<Estatistica>();
                this.MembrosGCD = new HashSet<MembrosGCD>();
                this.Membros = new HashSet<Membros>();
            }
        
            // Primitive properties
              
            public int Codigo { get; set; }
            public string Descricao { get; set; }
        
            // Navigation properties
        
            public virtual ICollection<Estatistica> Estatistica { get; set; }
            public virtual Setor_GCD Setor_GCD { get; set; }
            public virtual ICollection<MembrosGCD> MembrosGCD { get; set; }
            public virtual ICollection<Membros> Membros { get; set; }
        
        }
    }


    Ricardo Soares

    quinta-feira, 13 de dezembro de 2012 15:50
  • Ricardo, o erro se deve numa entidade chamada Area.

    Vá na classe onde se encontram as propriedades dessa Entidade e coloque o atributo [Key]:

     public class Area
        {
            [Key]
            public int Codigo { get; set; }
            public string Nome { get; set; }
        }

    Para mais informações, acesse: http://ferhenriquef.com/2011/10/28/entity-framework-data-annotations/.

    Abs.
    Nalin

    quinta-feira, 13 de dezembro de 2012 16:15
  • kra eu ja tinha tentando isso, mas não ta reconhecendo o annotation [key].

    E chamei o namespace certinho: System.ComponentModel.DataAnnotations


    Ricardo Soares

    quinta-feira, 13 de dezembro de 2012 16:28
  • Ricardo, você adicionou a referência System.ComponentModel.DataAnnotations ao Projeto?

    Tente também colocar o atributo com o Namespace completo:

    public class Area
        {
            [System.ComponentModel.DataAnnotations.Key]
            public int Codigo { get; set; }
            public string Nome { get; set; }
        }

    Abs.
    Nalin

    • Sugerido como Resposta Fabiano Nalin sexta-feira, 14 de dezembro de 2012 14:36
    • Marcado como Resposta ricardosoares1rj sábado, 15 de dezembro de 2012 15:26
    quinta-feira, 13 de dezembro de 2012 18:19
  • Vlw Fabiano. O que estava faltando era eu fazer a referencia do assembler.


    Ricardo Soares

    sábado, 15 de dezembro de 2012 15:27