Error updating entries in the Entity Framework

3

I have the following code for mapping my application, but when I try to make a insert it gives the following error.

  

An error occurred while updating the entries. See the inner exception for details

I've already had this error I just changed a HasOptional to a HasRequired and it worked but this time I'm not finding a solution to this error.

Class:

public partial class REGISTRO_PERGUNTAS
{
    public REGISTRO_PERGUNTAS()
    {
        this.REGISTRO_RESPOSTAS = new List<REGISTRO_RESPOSTAS>();
    }

    public decimal ID_PERGUNTA { get; set; }
    public int ID_ARQUIVO { get; set; }
    public byte ID_TIPO { get; set; }
    public int? NUMERO_PERGUNTA { get; set; }
    public string PERGUNTA { get; set; }
    public string USUARIO_PERGUNTA { get; set; }
    public Nullable<int> ID_AREA { get; set; }
    public Nullable<System.DateTime> DT_PERGUNTA { get; set; }
    public Nullable<int> SITUACAO { get; set; }
    public virtual AREAS_RESPONSAVEIS AREAS_RESPONSAVEIS { get; set; }
    public virtual ICollection<REGISTRO_RESPOSTAS> REGISTRO_RESPOSTAS { get; set; }
    public virtual REGISTRO_QUESTIONARIO REGISTRO_QUESTIONARIO { get; set; }
    public virtual TIPOS_PERGUNTA TIPOS_PERGUNTA { get; set; }
}

Mapping:

public class REGISTRO_PERGUNTASMap : EntityTypeConfiguration<REGISTRO_PERGUNTAS>
{
    public REGISTRO_PERGUNTASMap() {
        // Primary Key
        this.HasKey(t => t.ID_PERGUNTA);

        // Properties
        this.Property(t => t.PERGUNTA).IsRequired().HasMaxLength(300);
        this.Property(t => t.USUARIO_PERGUNTA).HasMaxLength(50);

        // Table & Column Mappings
        this.ToTable("REGISTRO_PERGUNTAS");
        this.Property(t => t.ID_PERGUNTA).HasColumnName("ID_PERGUNTA");
        this.Property(t => t.ID_ARQUIVO).HasColumnName("ID_ARQUIVO");
        this.Property(t => t.ID_TIPO).HasColumnName("ID_TIPO");
        this.Property(t => t.NUMERO_PERGUNTA).HasColumnName("NUMERO_PERGUNTA");
        this.Property(t => t.PERGUNTA).HasColumnName("PERGUNTA");
        this.Property(t => t.USUARIO_PERGUNTA).HasColumnName("USUARIO_PERGUNTA");
        this.Property(t => t.ID_AREA).HasColumnName("ID_AREA");
        this.Property(t => t.DT_PERGUNTA).HasColumnName("DT_PERGUNTA");
        this.Property(t => t.SITUACAO).HasColumnName("SITUACAO");

        // Relationships
        this.HasRequired(t => t.AREAS_RESPONSAVEIS)
            .WithMany(t => t.REGISTRO_PERGUNTAS)
            .HasForeignKey(d => d.ID_AREA);
        this.HasRequired(t => t.REGISTRO_QUESTIONARIO)
            .WithMany(t => t.REGISTRO_PERGUNTAS)
            .HasForeignKey(d => d.ID_ARQUIVO);
        this.HasRequired(t => t.TIPOS_PERGUNTA)
            .WithMany(t => t.REGISTRO_PERGUNTAS)
            .HasForeignKey(d => d.ID_TIPO);
    }
}
    
asked by anonymous 25.10.2014 / 04:03

1 answer

4

Include in your context a override for the SaveChanges event as follows:

    public override int SaveChanges()
    {          
        try
        {
            return base.SaveChanges();
        }
        catch (DbEntityValidationException e)
        {
            foreach (var eve in e.EntityValidationErrors) // <-- Coloque um Breakpoint aqui para conferir os erros de validação.
            {
                Console.WriteLine("Entidade do tipo \"{0}\" no estado \"{1}\" tem os seguintes erros de validação:",
                    eve.Entry.Entity.GetType().Name, eve.Entry.State);
                foreach (var ve in eve.ValidationErrors)
                {
                    Console.WriteLine("- Property: \"{0}\", Erro: \"{1}\"",
                        ve.PropertyName, ve.ErrorMessage);
                }
            }
            throw;
        }
        catch (DbUpdateException e)
        {
            foreach (var eve in e.Entries)
            {
                Console.WriteLine("Entidade do tipo \"{0}\" no estado \"{1}\" tem os seguintes erros de validação:",
                    eve.Entity.GetType().Name, eve.State);
            }
            throw;
        }
        catch (SqlException s) {
            Console.WriteLine("- Message: \"{0}\", Data: \"{1}\"",
                        s.Message, s.Data);
            throw;
        }
    }

You can put a breakpoint as suggested or check the messages sent to the Console.

    
26.10.2014 / 02:38