Fórum Fazer Insert ou Update de um-pra-muitos em MVC #529513
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
Gostei + 1
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)