none
Inserir dados em tabelas relacionadas RRS feed

  • Pergunta

  • Tenho estas 2 classes relacionadas, sendo que a classe pedido tem uma Coleção de "ItensPedidos"...

    A classe Pedido:

       
    public class PedidoDTO { 
               public int pedidoID { get; set; }            
               public int codigo { get; set; }  
               public DateTime data { get; set; } 
               public int clienteID { get; set; }            
               public virtual ClienteDTO Cliente { get; set; } 
               public virtual IEnumerable<ItemPedidoDTO> itensPedidos { get; set; }       
    }



    E a classe ItemPedido:

         
    public class ItemPedidoDTO
            {
                public int itemPedidoID { get; set; }
                public int quantidade { get; set; }
                public decimal preco { get; set; }
                public int porcentagemDesconto { get; set; }
                
                public int pedidoID { get; set; }
                public virtual PedidoDTO pedido { get; set; }
        
                public int produdoID { get; set; }
                public virtual ProdutoDTO produto { get; set; }
            }


    **Minha duvida é a seguinte:**
    Como persisto os dados de maneira que a entidade ItemPedido receba automaticamente a chave estrangeira?



    ----------


    *No projeto faço uso de: Code first, EF6, migrations, repositórios genéricos,  repositórios de implementação e mapeamento com Fluent Api.*

    sábado, 18 de agosto de 2018 20:39

Respostas

  • Isso depende da forma como vc quer persistir, se tiveres a trabalhar com procedimentos armazenados no Sql Server basta utilizares o @@Identity após persistires o PedidoDTO.

    Ex:

    declare @Id as int

    insert into PedidoDTO

    values....

    Set @Id=(select @@identity)

    Está variável vai pegar o a chave do PedidoDTO.

    Mas aconselho a colocar essa operação dentro de um procedimento armazenado.

    Por outro lado podes utilizar o EF que vai te ajudar a persistir isso de uma forma mais fácil, existem várias opções.

    Espero ter ajudado, se lhe foi útil por favor marca como ajuda.

    quinta-feira, 6 de setembro de 2018 15:59

Todas as Respostas

  • Boa tarde, Márcio Sebastião. Tudo bem?

    Obrigado por usar o fórum MSDN

    Essa seria uma questão de "How to/Customização" ou "Break Fix/Erro"?

    Atenciosamente,


    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 23 de agosto de 2018 19:06
    Moderador
  • Isso depende da forma como vc quer persistir, se tiveres a trabalhar com procedimentos armazenados no Sql Server basta utilizares o @@Identity após persistires o PedidoDTO.

    Ex:

    declare @Id as int

    insert into PedidoDTO

    values....

    Set @Id=(select @@identity)

    Está variável vai pegar o a chave do PedidoDTO.

    Mas aconselho a colocar essa operação dentro de um procedimento armazenado.

    Por outro lado podes utilizar o EF que vai te ajudar a persistir isso de uma forma mais fácil, existem várias opções.

    Espero ter ajudado, se lhe foi útil por favor marca como ajuda.

    quinta-feira, 6 de setembro de 2018 15:59