因此,在一个典型的模型中,如果父母可以有多个孩子并且孩子只能有一个父母,那么您如何管理孩子的添加。我一直在使用这种方法;处理NHibernate父子集合的最佳实践
public class Parent
{
public Parent()
{
Children = new List<Child>();
}
public IList<Child> Children
{
get;
private set;
}
}
public class Child
{
public Parent Parent
{
get;
set;
}
}
var child = new Child();
var parent = new Parent();
parent.Children.Add(child);
child.Parent = parent;
问题是,无论我想添加一个新的孩子,我一定要记得添加一个引用到孩子和家长及其有点痛的两者。我可以在父类中添加一个AddChild方法,并使其负责添加子项 - 现在的问题是有两种方法通过Children属性和方法添加子项。那么这是更好的解决方案吗?
public class Parent
{
public Parent()
{
children = new List<Child>();
}
private IList<Child> children
{
get;
private set;
}
public IEnumerable<Child> Children
{
get
{
return children;
}
}
public void AddChild(Child child)
{
children.Add(child);
child.Parent = this;
}
}
有没有关于此方面的最佳实践的指导,你做了什么?
说到第二个例子,我唯一担心的是如何使用Linq到NHibernate。由于实际映射的属性现在是私人的,我会假设它不会被视为可见的。有什么想法吗? – Gareth 2009-06-03 11:33:42
您可以在您的映射中指定NHibernte在设置值时应该使用字段而不是属性。 (例如看一下访问属性)。 – 2009-06-03 12:07:13
是的,我得到的是当Linq到NHibernate完成时,如果该字段是私有的,并且公共访问只返回对原始集合的引用,那么如何使用它。例如。 (x => x.Children.Name.Equals(“Jonnie”)) – Gareth 2009-06-03 12:54:33