Q:

Como salvar em 2 tabelas ao mesmo tempo

Olá, gostaria de uma ajuda. Eu tenho esse método para salvar os dados em duas tabelas.
 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();
        }

Mas na hora que vo salvar ele salva so 1 item, e é o ultimo item, gostaria de saber como eu faço para salvar tudo de uma vez. Obrigado !!

A:

Esse código não faz muito sentido. Se os itens fazem parte de uma Locacao, você pode salvar tudo apenas usando a Locacao. 
De qualquer forma, vou supor que, por algum motivo, você precisa que esses itens venham em Carrinho. Ou seja:
    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();
    }

