我的架构中有两个表与PK和FK关系。我使用SubSonic生成器创建了DAL。如果我创建一个新的父母及其子女,我该如何保存?单独或一次性?
e.g。
Parent.Save();
ChildCollection.SaveAll();
我尝试了上述方法,但由于ChildCollection没有父级ID,因此无效。是我必须自己为每个孩子分配父ID,还是可以选择一次性保存它们?
答案 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();
}
}
}