Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 530439
            [titulo] => Fazer Insert ou Update de um-pra-muitos em MVC
            [dataCadastro] => DateTime Object
                (
                    [date] => 2015-09-01 17:08:34
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 232232
            [status] => A
            [isExample] => 
            [NomeUsuario] => Joel Rodrigues
            [Apelido] => 
            [Foto] => 232232_20161017163010.jpg
            [Conteudo] => Pesquise por "master detail" no ASP.NET MVC, é esse tipo de relacionamento que você está implementando.
        )

)

Fazer Insert ou Update de um-pra-muitos em MVC

Adriano Cordeiro
|
MVP
Pontos: 200
    22 ago 2015

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 :
Tela de Cadastro de Fornecedor (Clique na imagem para abrir em uma nova janela)

Eu consigo manipular os Endereços no browser, inserir e excluir da Tela, as Models envolvidas são o seguinte:

#Códigopublic 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; }
}

#Códigopublic 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:
#Códigopublic 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();
}

Post mais votado

Joel Rodrigues
   - 01 set 2015

Pesquise por "master detail" no ASP.NET MVC, é esse tipo de relacionamento que você está implementando.

1
|
0

Adriano Cordeiro
|
MVP
Pontos: 200
    05 set 2015

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:

#Código
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 !!

0
|
0