How to fix Entityvalidationerrors

Asked

Viewed 10,316 times

7

Hi, I need a help. After compiling my project I am getting an error:

Validation failed for one or more entities. See 'Entityvalidationerrors' Property for more Details.

I have already found that this error is caused in the execution of the savechanges method. I will debug my code and it is all right until the execution of the method. when reviewing my code I found something like in the figures below:

imagem 1 imagem 2

I analyzed my code but I couldn’t find the exact location of where the problem is.

I wonder if there is a feature in Visual Studio that can direct me to the exact place where the error is occurring? Or is there a place 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());
        }
    }

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 inside the catch.

  • Not recognizing the Dbentityvalidationexception

  • @user9090 https://msdn.microsoft.com/en-us/library/system.data.entity.validation.dbentityvalidationexception%28v=vs.113%29.aspx

Browser other questions tagged

You are not signed in. Login or sign up in order to post.