Fazer Insert ou Update de um-pra-muitos em MVC
22/08/2015
0
Boa noite!,
Eu tenho a seguinte situação:
O usuário cadastrará um Fornecedor e também poderá adicionar ou excluir um ou mais Endereços para esse Fornecedor, mas só poderá enviar para o BD ao clicar no botão Salvar :
[img:descricao=Tela de Cadastro de Fornecedor]http://arquivo.devmedia.com.br/forum/imagem/247411-20150822-213152.jpg[/img]
Eu consigo manipular os Endereços no browser, inserir e excluir da Tela, as Models envolvidas são o seguinte:
Minha dúvida é como fazer o Insert e o Update dos dados para gravar no Banco de Dados, uma vez que estou aprendendo a trabalhar com o MVC e Entity ?
Na minha classe os dados chegam perfeitamente, eu imagino algo + ou - assim:
Eu tenho a seguinte situação:
O usuário cadastrará um Fornecedor e também poderá adicionar ou excluir um ou mais Endereços para esse Fornecedor, mas só poderá enviar para o BD ao clicar no botão Salvar :
[img:descricao=Tela de Cadastro de Fornecedor]http://arquivo.devmedia.com.br/forum/imagem/247411-20150822-213152.jpg[/img]
Eu consigo manipular os Endereços no browser, inserir e excluir da Tela, as Models envolvidas são o seguinte:
public class TBFornecedor { [Key] public int TBFORNECEDORID { get; set; } public string NMFORNECEDOR { get; set; } public string DSFORNECEDOR { get; set; } public string CPF { get; set; } public string CNPJ { get; set; } public string IE { get; set; } [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] public DateTime DTCADFORNECEDOR { get; set; } public bool STATUS { get; set; } public string SITE { get; set; } public string OBSFORNECEDOR { get; set; } public virtual ICollection<TBEndereco> TBEndereco { get; set; } }
public class TBEndereco { [Key] public int TBENDERECOID { get; set; } public int? TBFORNECEDORID { get; set; } public int? TBFUNCIONARIOID { get; set; } public string LOGRADOURO { get; set; } public string NUMLOGRADOURO { get; set; } public string COMPLEMENTO { get; set; } public string BAIRRO { get; set; } public string CEP { get; set; } public virtual TBFornecedor TBFornecedor { get; set; } }
Minha dúvida é como fazer o Insert e o Update dos dados para gravar no Banco de Dados, uma vez que estou aprendendo a trabalhar com o MVC e Entity ?
Na minha classe os dados chegam perfeitamente, eu imagino algo + ou - assim:
public void InsereFornecedor(TBFornecedor pFornecedor) { if (pFornecedor.TBFORNECEDORID > 0) { //Fornecedor já está cadastrado então //Atualizo dados do Fornecedor e //Exclui ou Adiciona Endereços } else { //Fornecedor é Novo então //faço um insert no BD do Fornecedor e dos Endereços _repositorio.Fornecedores.Add(pFornecedor); } _repositorio.SaveChanges(); }
Adriano Cordeiro
Curtir tópico
+ 0
Responder
Post mais votado
01/09/2015
Pesquise por "master detail" no ASP.NET MVC, é esse tipo de relacionamento que você está implementando.
Joel Rodrigues
Responder
Mais Posts
05/09/2015
Adriano Cordeiro
Resolvido, criei um botão "Salvar Endereço" em uma janela Modal e no evento click (via jquery) desse botão fiz algo que me atendeu perfeitamente:
Obrigado !!
fornecedor.TBEndereco.push({ "TBENDERECOID": $("#TBENDERECOID").val(), "TBFORNECEDORID": $("#TBFORNECEDORID").val(), "LOGRADOURO": $("#LOGRADOURO").val(), "NUMLOGRADOURO": $("#NUMLOGRADOURO").val(), "COMPLEMENTO": $("#COMPLEMENTO").val(), "BAIRRO": $("#BAIRRO").val(), "CEP": $("#CEP").val(), "SIGLAUF": $("#ddlUF").val(), "STATUSENDERECO": _status }); //EXECUTA O TRANSPORTE PARA O BD VIA AJAX: var iconCarregando = $('<img src="~/Imagens/midi.gif" class="icon"/> <span class="destaque">Carregando. Por favor aguarde...</span>') $('#insere_aqui').css('display', 'block'); $.ajax({ url: "/Fornecedor/AtualizarEndereco", type: "POST", datatype: "JSON", data: JSON.stringify(fornecedor), processData: false, contentType: "application/json; charset=uft-8", beforeSend: function () { //$('#insere_aqui').html(iconCarregando); //$("#insere_aqui").html("<p>Carregando...<p>"); alert('Carregando...'); }, complete: function () { $(iconCarregando).remove(); }, success: function (data) { . . .
Obrigado !!
Responder
Clique aqui para fazer login e interagir na Comunidade :)