因此,在一個典型的模型中,如果父母可以有多個孩子並且孩子只能有一個父母,那麼您如何管理孩子的添加。我一直在使用這種方法;處理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