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

C#

10/11/2017

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

Curtidas 0

Melhor post

Paulo Freitas

Paulo Freitas

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!
GOSTEI 3
POSTAR