How to fix EntityValidationErrors

7

Hi, I need some help. After compiling my project I'm getting an error:

  

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

I have already discovered that this error is caused in the execution of the savechanges method. I debugged my code and everything is fine until the method is executed. when reviewing my code I found something like the pictures below:

I looked at my code but could not find the exact location of the problem.

I wonder if there is any feature in Visual Studio that can point me to the exact location where the error is occurring? Or is there a place to tell where the error is?

Below is an excerpt of the code where the error occurs.

public void inserirAcao(float cpf, string codigo, string empresa, string tipo, DateTime data, string hora, double abertura,
                             double maxima, double minima, double media, double fechamento, double fechamento_anterior,
                             int volume, int volume_financeiro, int negocio, double oferta_de_compra, double oferta_de_venda,
                             int quantidade_ofertada_compra, int quantidade_fertada_venda, double variação, string status, string fase)
    {
        try
        {
            validaInserirAcao(cpf, codigo, empresa, tipo, data, hora, abertura, maxima, minima, media, fechamento, fechamento_anterior,
                              volume, volume_financeiro, negocio, oferta_de_compra, oferta_de_venda, quantidade_ofertada_compra,
                              quantidade_fertada_venda, variação, status, fase);
            // instancia o banco
            bancotccEntities bco = new bancotccEntities();
          //  bco.Database.Connection.Open();
            // cria um objeto para receber os dados das ações
            acao obj = new acao();

            //popula o objeto 
            obj.cpf = cpf;
            obj.codigo = codigo;
            obj.empresa = empresa;
            obj.tipo = tipo;
            obj.data = Convert.ToDateTime(data);
            obj.hora = hora;
            obj.abertura = abertura;
            obj.maxima = maxima;
            obj.minima = minima;
            obj.medio = media;
            obj.fechamento = fechamento;
            obj.f_anterior = fechamento_anterior;
            obj.volume = volume;
            obj.v_financeiro = volume_financeiro;
            obj.negocio = negocio;
            obj.ofcompra = oferta_de_compra;
            obj.ofvenda = oferta_de_venda;
            obj.qtd_of__compra = quantidade_ofertada_compra;
            obj.qtd_of_venda = quantidade_fertada_venda;
            obj.variacao = Convert.ToString(variação);
            obj.status = Convert.ToInt32(status);
            obj.fase = fase;

            // adiciona o objeto ao banco

           // bco.AddToacao(obj);
            bco.acao.Add(obj);
            // salva as informações o banco de dados
            bco.SaveChanges();
           // bco.Database.Connection.Close();
        }
        catch (Exception e)
        {

            throw new Exception(e.Message.ToString());
        }
    }
    
asked by anonymous 30.05.2014 / 05:26

1 answer

12

Create in your context the following:

public class MeuProjetoContext : DbContext
{
    public override int SaveChanges()
    {
        try
        {
            return base.SaveChanges();
        }
        catch (DbEntityValidationException e)
        {
            foreach (var eve in e.EntityValidationErrors)
            {
                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;
        }
    }

    ...
    // Coloque aqui as declarações de DbSets e outros.
}

You can see the error messages on the console or by placing a breakpoint within catch .

    
30.05.2014 / 07:57