2012-05-15 3 views
1

Je suis relativement nouveau dans le framework et les patterns d'entité. Comment est-ce que j'insérerais des données dans une table d'enfant?Comment insérer une ligne dans la table enfant?

J'ai inséré l'information dans la table parente. Dois-je retourner l'identité de la rangée et ensuite émettre un autre insert?

Table utilisateur et rôle utilisateur.

J'ai essayé de trouver une solution pour un jour maintenant, mais je pense que c'est parce que je cherche les mauvais résultats. Ma structure est configurée à l'aide de Unit of Work/Repository Pattern.

Toute aide pourrait vous être utile. Merci!

Répondre

3

Récupère l'objet parent. Ajoutez l'enregistrement enfant à sa propriété de navigation.

quelque chose comme ça

int orderId=33; 

var parent=dbContext.Orders.Where(x=>x.Id==orderId); 

parent.Details.Add(new OrderDetail{ Quantity=4, ItemId=37}); 
parent.Details.Add(new OrderDetail{ Quantity=2, ItemId=48}); 

dbContext.SaveChanges(); 

En supposant Ordre est votre entité maître et détail est votre entité enfant et dbContext est votre objet de classe DBContext.

EDIT: Si vous ajoutez ensemble,

Order parent=new Order { CustomerId=35, Discount=43.63 }; 
parent.Details.Add(new OrderDetail{ Quantity=4, ItemId=37}); 
parent.Details.Add(new OrderDetail{ Quantity=2, ItemId=48}); 

dbContext.Orders.Add(parent); 
dbContext.SaveChanges(); 
+0

Est-ce la seule façon de le faire? Prenez l'ID et exécutez un autre SaveChanges()? J'essayais de voir s'il y avait un autre moyen de le faire, car il va exécuter deux fois SaveChanges(). – xivo

+0

@AllenTong: Il est runinig SaveChanges une seule fois. Pas deux fois. – Shyju

+0

Oui, mais je veux dire quand j'ajoute Order in et que j'ajoute OrderDetails in. Cela me donnerait deux fois l'exécution quand j'ajoute la commande et j'ai besoin d'ajouter le orderdetail juste après. – xivo

Questions connexes