//Persistir e atualizar um registro existente //Atualizar dados da Funcionario, Pessoa e lista de endereços private bool atualizar(Funcionario OFuncionario) { //Localizar existentes no banco Funcionario dbFuncionario = this.carregar(OFuncionario.id); if (dbFuncionario == null) { return(false); } Pessoa dbPessoa = db.Pessoa.FirstOrDefault(x => x.id == dbFuncionario.idPessoa); //Configurar valores padrão OFuncionario.setDefaultUpdateValues <Funcionario>(); OFuncionario.Pessoa.setDefaultUpdateValues <Pessoa>(); OFuncionario.idPessoa = dbPessoa.id; OFuncionario.Pessoa.id = dbPessoa.id; //Atualizacao da Funcionario var FuncionarioEntry = db.Entry(dbFuncionario); FuncionarioEntry.CurrentValues.SetValues(OFuncionario); FuncionarioEntry.ignoreFields <Funcionario>(); //Atualizacao Dados Pessoa var PessoaEntry = db.Entry(dbPessoa); PessoaEntry.CurrentValues.SetValues(OFuncionario.Pessoa); PessoaEntry.ignoreFields <Pessoa>(); if (OFuncionario.Pessoa.listaEnderecos != null) { //Atualizacao da lista de endereços enviados foreach (var ItemEndereco in OFuncionario.Pessoa.listaEnderecos) { var dbEndereco = dbPessoa.listaEnderecos.FirstOrDefault(e => e.id == ItemEndereco.id); if (dbEndereco != null) { var EnderecoEntry = db.Entry(dbEndereco); ItemEndereco.setDefaultUpdateValues <PessoaEndereco>(); EnderecoEntry.CurrentValues.SetValues(ItemEndereco); EnderecoEntry.ignoreFields <PessoaEndereco>(new string[] { "idTipoEndereco", "idPessoa" }); } else { ItemEndereco.idPessoa = OFuncionario.idPessoa; ItemEndereco.setDefaultInsertValues <PessoaEndereco>(); db.PessoaEndereco.Add(ItemEndereco); } } } db.SaveChanges(); return(OFuncionario.id > 0); }
//Persistir e atualizar um registro existente //Atualizar dados da Devedor, Pessoa e lista de endereços private bool atualizar(Devedor ODevedor) { //Localizar existentes no banco Devedor dbDevedor = this.carregar(ODevedor.id); if (dbDevedor == null) { return(false); } Pessoa dbPessoa = db.Pessoa.FirstOrDefault(x => x.id == dbDevedor.idPessoa); //Configurar valores padrão ODevedor.setDefaultUpdateValues(); ODevedor.Pessoa.setDefaultUpdateValues(); ODevedor.idPessoa = dbPessoa.id; ODevedor.Pessoa.id = dbPessoa.id; //Atualização do Devedor var DevedorEntry = db.Entry(dbDevedor); DevedorEntry.CurrentValues.SetValues(ODevedor); DevedorEntry.ignoreFields(); //Atualização Dados Pessoa var PessoaEntry = db.Entry(dbPessoa); PessoaEntry.CurrentValues.SetValues(ODevedor.Pessoa); PessoaEntry.ignoreFields(); //Atualização da lista de endereços enviados foreach (var ItemEndereco in ODevedor.Pessoa.listaEnderecos) { var dbEndereco = dbPessoa.listaEnderecos.FirstOrDefault(e => e.id == ItemEndereco.id); if (dbEndereco != null) { var EnderecoEntry = db.Entry(dbEndereco); ItemEndereco.setDefaultUpdateValues(); EnderecoEntry.CurrentValues.SetValues(ItemEndereco); EnderecoEntry.ignoreFields(new[] { "idTipoEndereco", "idPessoa" }); } else { ItemEndereco.idPessoa = ODevedor.idPessoa; ItemEndereco.setDefaultInsertValues(); db.PessoaEndereco.Add(ItemEndereco); } } db.SaveChanges(); return(ODevedor.id > 0); }