Usuário com melhor resposta
Inserir dados em tabelas relacionadas

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.*
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.
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 26 de setembro de 2018 22:49
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.
-
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.
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 26 de setembro de 2018 22:49