(C Sharp + Entity Framework) Porque o código está salvando duas pessoas?

10/11/2017

0

C#

O objetivo é salvar a Pessoa e registrar na tabela Funcionário que também há um funcionário novo, no entanto no save abaixo estão sendo salvos dois registros com os mesmo dados exceto o idPessoa que é auto incremento.

private void btnSalvar_Click(object sender, EventArgs e)
        {

            if (VerificaSenha() == false)
            {
                MessageBox.Show("As senhas não conferem");
            }
            else
            {
                if ((pessoa == null) && (telefone == null) && (funcionario == null))
                {
                    pessoa = new Pessoa();
                    telefone = new Telefone();
                    funcionario = new Funcionario();

                    int numeroTelefone = 0;

                    
                    pessoa.NomeCompleto = (textBoxNomeCompleto.Text).ToString();
                    pessoa.CPF = (textBoxCPF.Text).ToString();
                    pessoa.Usuario = (textBoxUsuario.Text).ToString();
                    pessoa.Senha = (textBoxSenha.Text).ToString();
                    pessoa.Email = (textBoxEmail.Text).ToString();
                    pessoa.FotoPessoa = null;

                    telefone.Pessoa = pessoa;
                    int.TryParse(textBoxTelefone.Text, out numeroTelefone);
                    telefone.NumeroTelefone = numeroTelefone;

                    TelefoneApplication.SalvarTelefone(telefone);

                    if (comboBoxPerfil.SelectedItem.ToString() == "Funcionário")
                    {
                        pessoa.Perfil = "Funcionário";
                        var erroPessoa = PessoaApplication.SalvarPessoa(pessoa);

                        if (String.IsNullOrEmpty(erroPessoa))
                        {
                            MessageBox.Show("Pessoa cadastrada com sucesso!");
                        }
                        else
                        {
                            MessageBox.Show("Houve um erro ao tentar salvar pessoa.");
                        }

                        funcionario.Pessoa = pessoa;
                        
                        funcionario.IdCargo = (short)comboBoxCargo.SelectedValue;
                        var erroFuncionario = FuncionarioApplication.SalvarFuncionario(funcionario);
                        if (String.IsNullOrEmpty(erroFuncionario))
                        {
                            MessageBox.Show("Funcionário cadastrado com sucesso!");
                        }
                        else
                        {
                            MessageBox.Show("Erro ao cadastrar funcionário");
                        }

                    }
                }
                
            }
        }
Cesar Murilo

Cesar Murilo

Responder

Post mais votado

20/11/2017

Olá Cesar,

Não sei se já resolveu, mas o problema no seu código está na seguinte linha:

TelefoneApplication.SalvarTelefone(telefone);


Ao salvar o telefone, ele possui uma dependência do objeto pessoa então através do seu mapeamento será salvo a pessoa e o telefone posteriormente com sua respectiva chave estrangeira.

Espero ter ajudado!

Paulo Freitas

Paulo Freitas
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar