跳轉到內容

WebObjects/EOF/使用 EOF/EO 編輯上下文

來自華夏公益教科書

localInstanceOfObject

[編輯 | 編輯原始碼]

Pierce T. Wetter III

[編輯 | 編輯原始碼]

我認為我應該擴充套件一下上一句話,因為 localInstanceOfObject 似乎讓很多人感到困惑。

localInstanceOfObject() 實際上返回一個來自新的編輯上下文的傳入物件的 _錯誤_。

如果您有兩個對等上下文

 databaseContext -> ec1
                 -> ec2

並且您呼叫 localInstanceOfObject(),並且物件在資料庫中,您將在錯誤從 ec2 解析時獲得該物件的資料庫上下文快照的副本。也就是說,編輯上下文向上移動到資料庫上下文並返回資料庫上下文具有的內容,而不是 ec1 具有的內容(因為它們是對等)。如果它是一個未提交的物件,那麼該物件只存在於 ec1 中,因此該錯誤無法解析到 ec2 中。類似地,來自 ec1 的任何未提交更改通常不會顯示在 ec2 中,因為它們是對等。

Mark 剛剛所說的是,如果您有一個未提交的物件,並且您有

 databaseContext -> ec1 -> ec2
                        -> ec3

(即 ec2 和 ec3 是 ec1 的子編輯上下文,但彼此是對等)

然後當錯誤在 ec3 中觸發時,它向上移動一級,從 ec1 中拉取物件和更改(已提交或未提交)並將其返回到 ec3 中。但這之所以有效,是因為 ec1 對 ec2 和 ec3 都是通用的。換句話說,localInstanceOfObject() 從“源編輯上下文之上的一級”返回一個物件,該物件不一定是您想要的物件的副本,它取決於目標上下文相對於源上下文的位置。

華夏公益教科書