我有一个 NHibernate 实现并使用延迟加载的项目。我在这个项目中有两个课程:Person 和 Family。这两者之间的关系是聚合,意味着一个人有一个家庭列表。映射是:
<class name="Person" table="Person_Person" >
<id name="Id" type="Int64" unsaved-value="0">
<generator class="native" />
</id>
<bag name="Families" inverse="true" table="Person_Family" cascade="all-delete-orphan" >
<key column="Person_id_fk"/>
<one-to-many class="Domain.Entities.Family,Domain.Entities"/>
</bag>
</class>
在这个项目中,我通过 ID 获取一个人,然后更新一个家庭成员。
Person person = SessionInstance.Get<Person>(id);
foreach (Family fam in person.Families)
if (fam.Name == "Jaun")
{
fam.Code = 100;
SessionInstance.Update(fam);
}
系列未更新,因为此消息引发异常:`具有相同标识符值的不同对象已与会话相关联:193,实体:Domain.Entities.Family
我怎样才能更新一个人的家庭?