2009-05-30 3 views
2

У меня есть пара таблиц в моей схеме с отношениями PK и FK. Я создал DAL, используя генератор SubSonic. Если я создам нового родителя и его детей, как мне сохранить оба? Отдельно или одним выстрелом?Сохранение родителя и детей

, например.

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

Я попытался выше, но это не работает, потому что ChildCollection не имеет своего родителя ID. Должен ли я сам назначать родительские идентификаторы для каждого ребенка или есть возможность сохранить все это за один снимок?

ответ

0

Вы можете использовать частичные классы с пользовательской перегрузкой функции сохранения, чтобы обеспечить требуемую функциональность.

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

Предполагается, что ваши первичные ключи автоматически генерируются вашей базой данных. Если это так, то сначала вам нужно будет сохранить() родительский элемент, а затем заполнить свойство ParentID в каждом из объектов в вашем детском собрании. Как только вы это сделаете, вы сможете сохранить() свой ChildrenCollection.

 Parent.Save(); 
     ChildCollection.ForEach(x => x.ParentID = Parent.ParentID); 
     ChildCollection.SaveAll(); 
Смежные вопросы