親クラス(Person)が子クラス(OwnedThing)のインスタンスを多数所有している親子関係をモデル化しようとしています - 私はOwnedThingインスタンスをPersonクラスが保存され、私はその関連付けを双方向にしたい。NHibernateの双方向のアソシエーション
public class Person
{
public class MAP_Person : ClassMap<Person>
{
public MAP_Person()
{
this.Table("People");
this.Id(x => x.ID).GeneratedBy.GuidComb().Access.BackingField();
this.Map(x => x.FirstName);
this.HasMany(x => x.OwnedThings).Cascade.AllDeleteOrphan().KeyColumn("OwnerID").Inverse();
}
}
public virtual Guid ID { get; private set; }
public virtual string FirstName { get; set; }
public virtual IList<OwnedThing> OwnedThings { get; set; }
public Person()
{
OwnedThings = new List<OwnedThing>();
}
}
public class OwnedThing
{
public class MAP_OwnedThing : ClassMap<OwnedThing>
{
public MAP_OwnedThing()
{
this.Table("OwnedThings");
this.Id(x => x.ID).GeneratedBy.GuidComb().Access.BackingField();
this.Map(x => x.Name);
this.References(x => x.Owner).Column("OwnerID").Access.BackingField();
}
}
public virtual Guid ID { get; private set; }
public virtual Person Owner { get; private set; }
public virtual string Name { get; set; }
}
私は人を救うときOwnedThingインスタンスが保存されていない、逆するPerson.OwnedThingsを設定した場合。 Inverseを追加しないと保存は成功しますが、person.OwnedThings [0] .OwnerはDBから取得した後は常にnullです。
UPDATE データを保存するとき、それが設定されているので、NHibernateのは、私がDBからOwnedThingを取得するときに、それはを持っています、関連の多くのエンドを経由してデータベース内の1つの関連端を設定します人物セットにリンクし直してください。私のnull参照は、同じことをしていないようなEnversからのものでした。