2009-05-30 13 views
2

私はスキーマ内にPKとFKの関係を持つテーブルをいくつか持っています。 SubSonicジェネレータを使用してDALを作成しました。新しい親とその子を作成する場合、どうすれば両方を保存する必要がありますか?別々に、またはワンショットで?親と子を保存する

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

私は上記を試してみましたが、ChildCollectionは、その親のIDを持っていないので、それは動作しません。それは私が各子供のために親の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

想定:プライマリキーがデータベースによって自動的に生成されること。その場合、最初に行う必要があるのは、親をSave()してから、ChildrenCollection内の各オブジェクトにParentIDプロパティを設定します。これを済ませたら、ChildrenCollectionをSave()することができます。

 Parent.Save(); 
     ChildCollection.ForEach(x => x.ParentID = Parent.ParentID); 
     ChildCollection.SaveAll(); 
関連する問題