我有一個由NHibernate實現並使用Lazy Loading的項目。 我在這個項目中有兩個班級:人員和家庭。 這兩者之間的關係是聚合,是指一個人有一個家庭列表。 映射是:Cascade中的錯誤:具有相同標識符值的不同對象已與會話相關聯
<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
我如何更新一個人的家庭?
我測試你的建議,但沒有解決我的問題。 仍然拋出相同的異常。 – Ehsan
我想那麼你需要確保同一個人對象,即具有相同的ID,不應該在會話中的其他地方加載。 @ehsanzeynali – Zohaib
我不確定這是什麼意思?自然人在會議上加載因爲我需要人的家人。由這段代碼'Person person = SessionInstance.Get(id); '。 –
Ehsan