none
Relacionamento entre entidades + EF4 + Vs2010 RC RRS feed

  • Pergunta

  • Olá,

    Estou iniciando meus estudos com o EF4, e estou enfrentando um problema para criar relacionamentos entre entidades. No meu exemplo tenho 2 entidades Produto e FamiliaProduto

    public class FamiliaProduto : EntidadeBasica
    {
        public string Descricao { get; set; }
    }
     
    
    public class Produto : EntidadeBasica
    {
    
        public Produto()
        {
             FamiliaProduto = new FamiliaProduto();
        }
    
        public string Descricao { get; set; }
        public virtual FamiliaProduto FamiliaProduto { get; private set; }
        public DateTime DataCadastro { get; set; }
    }
    

     

     e estou criando meu próprio ObjectContext ( código abaixo )

    public class DataContext: ObjectContext 
        {
            public DataContext (): base("name=CotacaoWEBEntities", "CotacaoWEBEntities")
    	    {
                ContextOptions.LazyLoadingEnabled = true;
    	    }
    
            #region Métodos Privados
    
            private ObjectSet<FamiliaProduto> _familiaprodutos;
    
            private ObjectSet<Produto> _produto;
    
            #endregion
    
            #region Métodos Públicos
                    
            public ObjectSet<FamiliaProduto> FamiliaProdutos
            {
                get
                {
                    if (_familiaprodutos == null)
                        _familiaprodutos = CreateObjectSet<FamiliaProduto>();
    
                    return _familiaprodutos;
                }
            }
    
            public ObjectSet<Produto> Produto
            {
                get
                {
                    if (_produto == null)
                    {                   
                        _produto = CreateObjectSet<Produto>();
                    }                
                    return _produto;
                }
            }
    

     O Meu problema é quando executo o Get de produto, retorna o seguinte erro:

    Schema specified is not valid. Errors:
    The relationship 'CotacaoWEBModel.FamiliaProdutoProduto' was not loaded because the type 'CotacaoWEBModel.FamiliaProduto' is not available.
    The following information may be useful in resolving the previous error:
    The required property 'Produto' does not exist on the type 'ElementosFundamentais.FamiliaProduto'.

     

    Deve ser alguma coisa referente a Include mas não sei exatamente como utilizar o Include.

     

    Alguém sabe dizer o que devo fazer ?

    Obrigado desde já.

     

    Atenciosamente

    Djonatas Tenfen

    segunda-feira, 29 de março de 2010 16:27

Respostas

  • Olá Djonatas,

    Pelo que estou vendo está faltando declarar todas as propriedades das classes como virtual, deve ser assim:

    public class FamiliaProduto : EntidadeBasica
    {
        public virtual string Descricao { get; set; }
    }

    Verifique isso em todas as classes, quanto ao uso do 'Include' seria necessário se não estivesse habilitando o LazyLoad no contexto, mas pelo que vi está.

    Veja se dá certo, qualquer coisa reporta aí.

    segunda-feira, 29 de março de 2010 17:25