2009-09-24 7 views
2

Compte tenu de ces entités généré automatiquement par EF ... (pseudo)Entity Framework: fusion des entités dans la propriété de navigation

class CreditCard 
{ 
    int ID {get;set;} 
    string Number {get;set;} 
} 
class Person 
{ 
    EntityCollection<CreditCard> CreditCards {get; set;} 
} 

Quelle est la meilleure façon de fusionner une liste déconnectée dans la propriété CreditCards de la personne.

Une liste sera construite sur un formulaire Web basé sur UserInput. La liste contiendra de nouvelles cartes de crédit (ajouts), des modifications aux cartes de crédit existantes (mises à jour) et NE contiendra PAS de cartes de crédit que l'utilisateur a supprimées.

Suivant (le défi que je dois aider à) est de prendre cette liste déconnectée et fusionner avec la propriété CreditCards de l'instance Personne,

Ce processus de fusion sera (A) Ajouter de nouvelles instances à la liste , (B) Mettre à jour les instances existantes ET (C) Supprimer les instances non présentes dans la liste déconnectée.

Existe-t-il une manière factuelle qu'EF soit conçu pour gérer cela ou est-ce un processus manuel? Si c'est manuel, quel est le meilleur moyen d'y parvenir de manière générique et réutilisable d'une entité à l'autre?

Répondre

2

De toute évidence, je suis assez tard à la fête, mais à moins que je me trompe, où votre liste de cartes de crédit, creditCardList, est de type List<CreditCard>, ce que vous voulez serait similaire à:

Person yourPerson = Context.Persons 
          .Include("CreditCards") 
          .First<Person>(p => p.PersonId == yourPersonId); 

yourPerson.CreditCards.Clear(); 
creditCardList.ForEach(cc => yourPerson.CreditCards.Add(cc)); 
Context.SaveChanges(); 

Je ne sais pas si cela ne fonctionne pas, ou s'il y a quelque chose de plus dont vous avez besoin.

+0

Cela ne créerait-il pas de nouvelles cartes de crédit avec de nouveaux identifiants? Ou serait-ce simplement remplacer/mettre à jour les données pour les cartes de crédit qui existaient à l'origine (vérification des clés primaires, etc.). Quel serait le cas si la carte de crédit avait 1-plusieurs entités enfant? – user3141326

Questions connexes