我没有进入代码,而是有一个简单的问题。简单一对多的默认行为是插入子记录,然后用父键更新外键列。
有没有人有过一对多的插入子对象但未更新的情况,导致我的表中有一行外键列为空?
我想要标准一对多的默认行为。我不想将父级作为属性添加到子级。
谢谢。
我没有进入代码,而是有一个简单的问题。简单一对多的默认行为是插入子记录,然后用父键更新外键列。
有没有人有过一对多的插入子对象但未更新的情况,导致我的表中有一行外键列为空?
我想要标准一对多的默认行为。我不想将父级作为属性添加到子级。
谢谢。
我认为您必须在子项中设置父引用。
class Parent {
public virtual IList<Child> Children;
}
class Child {
public virtual Parent Parent;
}
Parent p = new Parent();
Child c = new Child();
c.Parent = p;
p.Children = new List<Child>();
p.Children.Add(c);
现在,当您保存此临时对象时,p
您将在子表中拥有正确的外键。
如果您的套装/包上没有 cascade="save-update" 会发生这种情况
或者,如果您将会话的 FlushMode 设置为“None”或“Commit”并使用您的 childRepository 保存了孩子,而忽略了使用其存储库保存包含集合的对象。