How to save in 2 tables at the same time

4

Hello, I'd like some help. I have this method to save the data into two tables.

 public void SalvarLocacao(Carrinho carrinho, Locacao locacao)
        {
            Item items = new Item();           
            foreach (var item in carrinho.ItensCarrinho)
            {                
                items.LocacaoId = locacao.LocacaoId;
                items.CacambaId = item.CacambaId;
                items.Quantidade = item.Quantidade;
                Db.Items.Add(items);                               
            }
            Db.Locacaos.Add(locacao);
            Db.SaveChanges();
        }

But when you save it saves only 1 item, and is the last item, I would like to know how I can save everything at once. Thank you !!

    
asked by anonymous 29.09.2016 / 08:20

1 answer

1

This code does not make much sense. If items are part of a Locacao , you can save everything by only using Locacao .

Anyway, I'll assume that for some reason, you need these items to come in Carrinho . That is:

    public void SalvarLocacao(Carrinho carrinho, Locacao locacao)
    {
        // Não entendi o que você quer fazer com isso, então removi.
        // Item items = new Item();           
        // foreach (var item in carrinho.ItensCarrinho)
        // {                
        //    items.LocacaoId = locacao.LocacaoId;
        //    items.CacambaId = item.CacambaId;
        //    items.Quantidade = item.Quantidade;
        //    Db.Items.Add(items);                               
        //}

        // Se um item do carrinho se relaciona com Locacao, basta você adicionar o item à Locacao.
        for (var item in carrinho.ItensCarrinho) 
        {
            if (!locacao.Items.Any(i => i.ItemId == item.ItemId))
            {
                locacao.Items.Add(item);
            }
        }

        Db.Locacaos.Add(locacao);
        // Isto salva a Locacao e todos os Itens relacionados a ela.
        Db.SaveChanges();
    }
    
29.09.2016 / 16:16