none
Lançar Pagamentos No banco de dados Usando ASP.NET MVC RRS feed

  • Pergunta

  • Ola,

    Estou em duvida sobre o que estou fazendo de errado

    Preciso que ele execute  o processo no total de vezes informado na parcela 

    porem ele  salvar apenas um no banco de dados aparentemente para no primeiro laço 

    LOJA_PEDIDO pedido = db.LOJA_PEDIDO.Single(c => c.PEDIDO == lOJA_PEDIDO_PGTO.PEDIDO);
                    var resultado = pedido.VALOR_TOTAL / Convert.ToInt32(lOJA_PEDIDO_PGTO.PARCELA);
                    for (int i = 1; i <= Convert.ToInt32(lOJA_PEDIDO_PGTO.PARCELA); i++)
                    {
                            lOJA_PEDIDO_PGTO.PARCELA = Convert.ToString(i);
                            lOJA_PEDIDO_PGTO.VALOR = Convert.ToInt32(resultado);
                            db.LOJA_PEDIDO_PGTO.Add(lOJA_PEDIDO_PGTO);
                    }
                    db.SaveChanges();
                    return RedirectToAction("Index");
    Obrigado
     
    segunda-feira, 15 de janeiro de 2018 07:42

Respostas

  • Ola  Kirikage Luis

    Verifica ai

    LOJA_PEDIDO pedido = db.LOJA_PEDIDO.Single(c => c.PEDIDO == lOJA_PEDIDO_PGTO.PEDIDO);
    var resultado = pedido.VALOR_TOTAL / Convert.ToInt32(lOJA_PEDIDO_PGTO.PARCELA);
    for (int i = 1; i <= Convert.ToInt32(lOJA_PEDIDO_PGTO.PARCELA); i++)
    {
       //FALTOU PASSAR O ID QUE FAZ O RELACIONAMENTO
       lOJA_PEDIDO_PGTO.IDRelacionamento = pedido.ID;
       lOJA_PEDIDO_PGTO.PARCELA = Convert.ToString(i);
       lOJA_PEDIDO_PGTO.VALOR = Convert.ToInt32(resultado);
       db.LOJA_PEDIDO_PGTO.Add(lOJA_PEDIDO_PGTO);
    
       //TRAZ ESTA LINHA PARA DENTRO DO FOR
       db.SaveChanges();
    }
    return RedirectToAction("Index");


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    • Marcado como Resposta Kirikage Luis segunda-feira, 15 de janeiro de 2018 15:11
    segunda-feira, 15 de janeiro de 2018 14:52
  • Olá Kirikage Luis

    O Problema é que quando você está fazendo o db.LOJA_PEDIDO_PAGTO.Add(...)

    Seu: lOJA_PEDIDO_PGTO já está com um ID de uma única instancia ou seja já está com uma chave definida, então o rasteador do EF ele entende como uma atualização para esse caso.

    O Correto seria fazer algo assim:

    LOJA_PEDIDO pedido = db.LOJA_PEDIDO.Single(c => c.PEDIDO == lOJA_PEDIDO_PGTO.PEDIDO);
    var resultado = pedido.VALOR_TOTAL / Convert.ToInt32(lOJA_PEDIDO_PGTO.PARCELA);
    for (int i = 1; i <= Convert.ToInt32(lOJA_PEDIDO_PGTO.PARCELA); i++)
    {
        db.LOJA_PEDIDO_PGTO.Add(new LOJA_PEDIDO_PGTO
        {
                PARCELA = Convert.ToString(i),
                VALOR = Convert.ToInt32(resultado)
        });
    }
    db.SaveChanges();

    Outra coisa é você verificar se está chegando mais de uma parcela em lOJA_PEDIDO_PAGTO.PARCELA.

    Faça isso em modo debug para assegurar a informação.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter


    segunda-feira, 15 de janeiro de 2018 14:32

Todas as Respostas

  • Olá Kirikage Luis

    Este lOJA_PEDIDO_PAGTO.PARCELA é um objeto que esta retornando da VIEW? Se for esta retornando preenchido conforme a quantidade informada?


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    segunda-feira, 15 de janeiro de 2018 09:49
  • lOJA_PEDIDO_PAGTO.PARCELA é o value do meu form ou seja Ex 3 
    segunda-feira, 15 de janeiro de 2018 13:59
  • Olá Kirikage Luis

    O Problema é que quando você está fazendo o db.LOJA_PEDIDO_PAGTO.Add(...)

    Seu: lOJA_PEDIDO_PGTO já está com um ID de uma única instancia ou seja já está com uma chave definida, então o rasteador do EF ele entende como uma atualização para esse caso.

    O Correto seria fazer algo assim:

    LOJA_PEDIDO pedido = db.LOJA_PEDIDO.Single(c => c.PEDIDO == lOJA_PEDIDO_PGTO.PEDIDO);
    var resultado = pedido.VALOR_TOTAL / Convert.ToInt32(lOJA_PEDIDO_PGTO.PARCELA);
    for (int i = 1; i <= Convert.ToInt32(lOJA_PEDIDO_PGTO.PARCELA); i++)
    {
        db.LOJA_PEDIDO_PGTO.Add(new LOJA_PEDIDO_PGTO
        {
                PARCELA = Convert.ToString(i),
                VALOR = Convert.ToInt32(resultado)
        });
    }
    db.SaveChanges();

    Outra coisa é você verificar se está chegando mais de uma parcela em lOJA_PEDIDO_PAGTO.PARCELA.

    Faça isso em modo debug para assegurar a informação.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter


    segunda-feira, 15 de janeiro de 2018 14:32
  • Ola  Kirikage Luis

    Verifica ai

    LOJA_PEDIDO pedido = db.LOJA_PEDIDO.Single(c => c.PEDIDO == lOJA_PEDIDO_PGTO.PEDIDO);
    var resultado = pedido.VALOR_TOTAL / Convert.ToInt32(lOJA_PEDIDO_PGTO.PARCELA);
    for (int i = 1; i <= Convert.ToInt32(lOJA_PEDIDO_PGTO.PARCELA); i++)
    {
       //FALTOU PASSAR O ID QUE FAZ O RELACIONAMENTO
       lOJA_PEDIDO_PGTO.IDRelacionamento = pedido.ID;
       lOJA_PEDIDO_PGTO.PARCELA = Convert.ToString(i);
       lOJA_PEDIDO_PGTO.VALOR = Convert.ToInt32(resultado);
       db.LOJA_PEDIDO_PGTO.Add(lOJA_PEDIDO_PGTO);
    
       //TRAZ ESTA LINHA PARA DENTRO DO FOR
       db.SaveChanges();
    }
    return RedirectToAction("Index");


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    • Marcado como Resposta Kirikage Luis segunda-feira, 15 de janeiro de 2018 15:11
    segunda-feira, 15 de janeiro de 2018 14:52
  • Obrigado Amigo você me ajudou e me tirou todas as duvidas 

    Att Luis Abraço 

    segunda-feira, 15 de janeiro de 2018 15:12