Automapper error in relationship

1

I have the following classes:

public class ListaGrupo : EntidadeBase
{
    public ListaGrupo()
    {
        Items = new List<ListaGrupoItem>();
    }

    public int Id { get; set; }
    public string Nome { get; set; }
    public virtual ICollection<ListaGrupoItem> Items { get; set; }

    public override string ToString()
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("Id = " + Id + ";");
        sb.Append("Nome = " + Nome + ";");

        return sb.ToString();
    }
}

public class ListaGrupoItem : EntidadeBase
{        
    public int Id { get; set; }        
    public int ListaGrupoId { get; set; }
    public string Nome { get; set; }
    public virtual ListaGrupo Grupo { get; set; }        

    public override string ToString()
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("Id = " + Id + ";");
        sb.Append("Nome = " + Nome + ";");
        sb.Append("GrupoId = " + ListaGrupoId + ";");
        sb.Append("Grupo: {" + Grupo.ToString() + "};");

        return sb.ToString();
    }
}

In EF configuration look like this:

public class ListaGrupoConfiguracao : EntityTypeConfiguration<ListaGrupo>
{
    public ListaGrupoConfiguracao()
    {
        // Chave Primária
        HasKey(t => t.Id);

        // Propriedades
        Property(t => t.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        Property(t => t.Nome).IsRequired().HasMaxLength(100);

        // Mapeamento para as tabelas do banco
        ToTable("lista_grupo");
        Property(t => t.Id).HasColumnName("id");
        Property(t => t.Nome).HasColumnName("nome");

        // Relacionamentos
    }
}

public class ListaGrupoItemConfiguracao : EntityTypeConfiguration<ListaGrupoItem>
{
    public ListaGrupoItemConfiguracao()
    {
        // Chave Primária
        HasKey(t => t.Id);            

        // Propriedades
        Property(t => t.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        Property(t => t.Nome).IsRequired().HasMaxLength(100);

        // Mapeamento para as tabelas do banco
        ToTable("lista_grupo_item");
        Property(t => t.Id).HasColumnName("id");
        Property(t => t.ListaGrupoId).HasColumnName("id_grupo");
        Property(t => t.Nome).HasColumnName("nome");

        // Relacionamentos
        HasRequired(i => i.Grupo).WithMany(g => g.Items).HasForeignKey(i => i.ListaGrupoId);
        // 1 para N
        //HasMany<Estabelecimento>(i => i.EstabelecimentoTipo).WithRequired(e => e.Tipo).HasForeignKey(e => e.TipoId);
    }
}

Finally in Controller I'm cast:

public ActionResult Index()
    {
        try
        {
            var x = _listaGrupoItemAppServico.BuscarTodos();
            var listaGrupoItemViewModel = Mapper.Map<IEnumerable<ListaGrupoItem>, IEnumerable<ListaGrupoItemViewModel>>(x);
            return View(listaGrupoItemViewModel);
        }
        catch (Exception ex)
        {
            log.Error("Erro no Index do controller Estabelecimento", ex);
            return View();
        }
    }

When you run Mapper.Map from an error and the application stops executing, neither does catch catch. If in my mapping I leave it like this:

HasRequired(i => i.Grupo).WithMany().HasForeignKey(i => i.ListaGrupoId);

It does not give the error, but it creates another ID_GroupList with foreign key in the database. I've been days with this problem. Has anyone ever experienced this? I've downgraded Autommaper and it did not work.

Error message:

An unhandled exception of type 'System.StackOverflowException' occurred in AutoMapper.dll
    
asked by anonymous 13.10.2016 / 21:26

0 answers