WebObjects/EOF/使用 EOF/EO 编辑上下文
外观
我认为我应该扩展一下上一句话,因为 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() 从“源编辑上下文之上的一级”返回一个对象,该对象不一定是您想要的对象的副本,它取决于目标上下文相对于源上下文的位置。