The member with identity 'Phase_Target_Project' does not exist in the metadata collection

0

I'm having a very strange error ... I do not make the least of it.

This is my class:

 public class FaseProjeto
{
    public int IdProjeto { get; set; }
    public int IdFase { get; set; }
    public virtual Projeto Projeto { get; set; }
    public virtual FaseModelo Fase { get; set; }
    public DateTime DataInicio { get; set; }
    public DateTime DataFim { get; set; }
    public StatusProjetoFase Situacao { get; set; }
    public string Observacao { get; set; }

}

This is the mapping of it:

public FaseProjetoMap()
    {

        // Define nome da Tabela
        ToTable("FaseProjeto");

        // Chave primária composta
        HasKey(po => new { po.IdProjeto, po.IdFase });

        // Properties
        Property(t => t.IdProjeto)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        Property(t => t.IdFase)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        Property(t => t.IdProjeto).HasColumnName("Projeto_Id");
        Property(t => t.IdFase).HasColumnName("Fase_Id");


        HasRequired(fp => fp.Projeto)
            .WithMany(p => p.Fases)
            .HasForeignKey(f=>f.IdProjeto);

        HasRequired(fp => fp.Fase)
            .WithMany()
        .HasForeignKey(f=>f.IdFase);

    }

Then I have this class that inherits from the project phase:

 public class FaseProjetoPlanejamento : FaseProjeto
{

    public virtual OrgaoPublico Orgao { get; set; }

    public virtual ObjetoLicitacao Objeto { get; set; }

    public virtual LocalizacaoObra Localizacao { get; set; }

    public virtual IEnumerable<Documento> Documentos 
    {
        get
        {
            return this.Projeto.GetDocumentos();
        }
    }

    public virtual NCode.Orcamento.Model.Ent.Orcamento Orcamento 
    {
        get
        {
            return this.Projeto.GetOrcamento();
        }
    }

    public override FaseModelo Fase
    {
        get { return ModeloProjetoObraSetorPublico.FasePlanejamento; }
        set { }
    }


}

When I save this class with EF I get the following error:

  

The member with identity 'Phase_Target_Project' does not exist in   the metadata collection. Parameter name: identity

    
asked by anonymous 09.06.2015 / 16:30

1 answer

0

I could debug and say which line exactly gives the error rs, I believe that something is incorrectly named in your mapping or is not filling the entity correctly, check again in this part of your code:

    HasRequired(fp => fp.Projeto)
        .WithMany(p => p.Fases)
        .HasForeignKey(f=>f.IdProjeto);

    HasRequired(fp => fp.Fase)
        .WithMany()
    .HasForeignKey(f=>f.IdFase);
    
09.06.2015 / 20:16