Erro ao Gravar Dados no Sql Server com Entity Framework CSharp

03/05/2015

0

Boa Tarde

Ao gravar os dados de um pedido está me retornando o erro "an error occurred while updating the entries. see the inner exception for details", bem no comando SaveChanges(); do objeto do entity framework, estou começando a mexer agora com o entity, segue o código que estou utilizando para gravar os dados

private void GravarPedido()
        {
            try
            {
                Pedidos pedido;
                FSapatariaEntidades.Database.Connection.Open();

                if(!txtPedido.Text.Equals(""))
                {
                    decimal lPedido = Convert.ToDecimal(txtCodCliente.Text);
                    pedido = FSapatariaEntidades.Pedidos.Single(p => p.Pedido.Equals(lPedido));
                }
                else
                {
                    pedido = new Pedidos();
                }

                if(pedido != null)
                {
                    pedido.Cliente = Convert.ToDecimal(txtPedCodCliente.Text);
                    pedido.Total_Pedido = Convert.ToDecimal(txtTotalPedido.Text);
                    pedido.Observacoes = txtPedObservacoes.Text;
                    pedido.Status_Pedido = 1;

                    if(txtPedido.Text.Equals(""))
                        pedido.Data_Hora = DateTime.Now;

                    pedido.Data_Entrega = dtpDataEntrega.Value;

                    pedido.Pedidos_Itens.Clear();

                    foreach (DataRow linha in FTabelaItens.Rows)
                    {
                        Pedidos_Itens pedidoItem = new Pedidos_Itens();
                        pedidoItem.Produto = Convert.ToDecimal(linha["Produto"]);
                        pedidoItem.Preco_Unitario = Convert.ToDecimal(linha["Preco_Unitario"]);
                        pedidoItem.Quantidade = Convert.ToDecimal(linha["Quantidade"]);
                        pedidoItem.Preco_Total = Convert.ToDecimal(linha["Preco_Total"]);

                        pedido.Pedidos_Itens.Add(pedidoItem);
                    }

                    pedido.Pedidos_Pagamentos.Clear();

                    foreach (DataRow linha in FTabelaPagamentos.Rows)
                    {
                        Pedidos_Pagamentos pedidoPagamento = new Pedidos_Pagamentos();
                        pedidoPagamento.Tipo_Pagamento = 1;
                        pedidoPagamento.Valor = Convert.ToDecimal(linha["Valor"]);

                        pedido.Pedidos_Pagamentos.Add(pedidoPagamento);
                    }

                    if (txtPedido.Text.Equals(""))
                        FSapatariaEntidades.Pedidos.Add(pedido);

                    FSapatariaEntidades.SaveChanges();

                    if (txtPedido.Text.Equals(""))
                        txtPedido.Text = pedido.Pedido.ToString();

                    if (txtPedDataHora.Text.Equals(""))
                        txtPedDataHora.Text = pedido.Data_Hora.ToString();

                    MessageBox.Show("Registro Alterado com Sucesso.");
                }

            }
            catch(SqlException erro)
            {
                MessageBox.Show(erro.Message);
            }
            catch(Exception erro)
            {
                MessageBox.Show(erro.Message);
            }
            finally
            {
                FSapatariaEntidades.Database.Connection.Close();
            }
        }
Lucas Ramos

Lucas Ramos

Responder

Posts

03/05/2015

Lucas Ramos

Consegui resolver uma das tabelas que tinha referencia de FK não estava preenchida gerando o erro.
Responder

07/08/2017

Anderson Lourenço

Em alguns casos fazer um code first novamente , também resolve, foi o meu caso.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar