2010-07-13 41 views
0

當我檢索父對象時,子對象的ID並不總是可預測的。例如,有時它被設置爲0(零),有時是實際值,有時是-1。NHibernate子對象的ID問題

爲什麼?

我怎樣才能解決這個問題?

代碼和映射文件請參閱this舊的問題從我。

+0

你能提供一個代碼示例嗎?這實際上取決於您如何加載子實體(懶惰與渴望)以及ID字段映射到的內容。 – 2010-07-13 19:09:45

+0

加載一些代碼,以便我們可以幫助您... – gillyb 2010-07-14 08:46:35

+0

代碼和映射文件請參閱更新中提供的鏈接。 – anonymous 2010-07-14 08:48:11

回答

0

你的老師和老師的詳細設置不同。

一個是多對一的,另一個是一對一的。

1

考慮到SQL Server的默認標識設置從來沒有設置爲0或-1的值有些可疑。

此外,由於TeacherDetail實際上是Teacher的補充/同步實體,爲什麼TeacherDetail的附加ID?你可以映射一個主要的外鍵在nhibernate

0

我會說你的前提是不正確的。

單個老師只有一個細節,因此沒有多對一的細節。這只是一個財產,因爲在老師有一個TeacherDetail的財產。

無論哪種方式,TeacherDetailsMapping都沒有多對一的方式......兩位老師永遠不會分享相同的細節。

修復不正確的映射和你的問題,不良映射的結果將消失。

+0

我不知道您是否知道,專利方面的一對一關係被映射爲多對一且唯一設置爲true。看到這個:http://nhforge.org/wikis/howtonh/lazy-loaded-one-to-one-with-nhibernate.aspx – anonymous 2010-07-22 13:47:01

+1

也許你很清楚你想做什麼會有幫助。這是一種解決方法'技巧',不是標準做法。 不確定要告訴你什麼,我敢肯定你可以將它映射爲「更好」。 – 2010-07-22 17:35:37

+0

@Mirage這是映射一對一的方式;一邊是多對一的地圖 – Jaguar 2010-07-23 06:07:12