2009-05-30 6 views
2

J'ai plusieurs tables dans mon schéma avec les relations PK et FK. J'ai créé le DAL en utilisant le générateur SubSonic. Si je crée un nouveau parent et ses enfants, comment puis-je sauvegarder les deux? Séparément ou en un coup?Enregistrement du parent et des enfants

par exemple.

Parent.Save(); 
ChildCollection.SaveAll(); 

J'ai essayé ci-dessus, mais cela ne fonctionne pas parce que ChildCollection n'a pas l'ID de son parent. Est-ce que je dois moi-même assigner moi-même les identifiants des parents pour chaque enfant ou y a-t-il une option pour tout enregistrer en une fois?

Répondre

0

Vous pouvez utiliser des classes partielles avec une surcharge personnalisée de la fonction de sauvegarde pour fournir la fonctionnalité souhaitée. Hypothèse: Vos clés primaires sont générées automatiquement par votre base de données.

public partial class Class1 
{ 
    public void Save(bool childern) 
    { 
     Save(); 

     if (childern) 
     { 
      //based on primary/foreign key SubSonic provides 
      //methods to fetch child collections related to 
      //this (primary key) table. 
      ChildernCollection col = Childerns(); 

      col.SaveAll(); 
     } 
    } 
} 
1

Si c'est le cas, vous devez d'abord enregistrer le parent, puis renseigner la propriété ParentID dans chacun des objets de votre collection ChildrenCollection. Une fois que vous avez fait cela, vous serez en mesure d'enregistrer() votre Collection Enfants.

 Parent.Save(); 
     ChildCollection.ForEach(x => x.ParentID = Parent.ParentID); 
     ChildCollection.SaveAll(); 
Questions connexes