我想模擬一個父類/子關聯,其中一個父類(Person)擁有一個子類(OwnedThing)的許多實例 - 我想在Person類是自動保存的OwnedThing實例保存下來,我希望該協會是雙向的。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; }
}
如果我設置Person.OwnedThings反演那麼OwnedThing情況下不會被保存,當我救的人。如果我不添加逆,那麼保存成功,但是person.OwnedThings [0] .Owner在從數據庫中檢索到後始終爲空。
UPDATE 在保存數據的NHibernate將設置一個關聯端的數據庫,因爲它是通過該協會的許多高端設置,所以當我從它確實數據庫檢索OwnedThing有鏈接回人員組。我的空引用來自Envers,似乎並沒有做同樣的事情。