保存父母和子女

时间:2009-05-30 08:50:40

标签: subsonic

我的架构中有两个表与PK和FK关系。我使用SubSonic生成器创建了DAL。如果我创建一个新的父母及其子女,我该如何保存?单独或一次性?

  

e.g。

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

我尝试了上述方法,但由于ChildCollection没有父级ID,因此无效。是我必须自己为每个孩子分配父ID,还是可以选择一次性保存它们?

2 个答案:

答案 0 :(得分:1)

假设:您的主键是由您的数据库自动生成的。如果是这样,首先需要做的是Save()父项,然后在ChildrenCollection中的每个对象中填充ParentID属性。完成后,您就可以保存()您的ChildrenCollection。

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

答案 1 :(得分: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();
        }
    }
}