My guess it's the "array" is appropriate but the editingContext
insertedObjects is not correct.

I won't try to help anymore. :P

-Lon

On Tue, Oct 27, 2009 at 4:52 PM, Chuck Hill <[email protected]>wrote:

>
> On Oct 27, 2009, at 4:40 PM, Lon Varscsak wrote:
>
>  Try:
>>
>> Create an Order and OrderItem and insert both into an editing context.
>> Then add the item to the order using
>> order.addObjectToBothSidesOfRelationshipWithKey(item, "items").
>> Then call editingContext.processRecentChanges()
>> Then removeObjectFromBothSidesOfRelationshipWithKey(item, "items") to
>> remove the item.
>> Then save the editing context.
>>
>> Here is the docs on that method:
>>
>> Forces this EOEditingContext to process pending insertions, deletions, and
>> updates. Normally, when objects are changed, the processing of the changes
>> is deferred until the end of the current event. At that point, an
>> EOEditingContext moves objects to the inserted, updated, and deleted lists,
>> delete propagation is performed, undos are registered, and
>> ObjectsChangedInStoreNotification and
>> ObjectsChangedInEditingContextNotification are posted. You can use this
>> method to explicitly force changes to be processed. An EOEditingContext
>> automatically invokes this method on itself before performing certain
>> operations such as saveChanges. This method does nothing in Java Client
>> applications.
>>
>>
>> I'm struggling with how to describe why that works. :P
>>
>
> It should not work.  processRecentChanges() is called during saveChanges()
> so it should not affect the item getting deleted.  My feeling is that it not
> getting deleted after initial insertion is a bug.
>
>
>
>   It's been a long week and it's only Tuesday.  My understanding (although
>> I'm sure Chuck will correct me) is that that delete you're expecting to
>> happen doesn't actually happen until the end of the event loop (at which
>> time the editingContext's processRecentChanges method is called).  Since
>> you're doing two actions to the same relationship EOF loses the ability to
>> know what the right thing to do in that situation (I can't remember the
>> details as to why this is though...it made sense to me at one point :D).
>>
>
> Maybe you are thinking of needing to call processRecentChanges() so that
> the contents of relationships appear correctly in the UI before saveChanges
> is called.
>
>
>
>  There aren't many times where you're going to do what you describe (at
>> least in my experience).  Generally a user is going to insert/modify a
>> record in one RR loop and then delete it in another and you wouldn't see
>> what you're experiencing.  However, when the time arises that you need to do
>> that (for whatever reason) calling processRecentChanges after my first set
>> of changes (in your case an insert) will make it so that EOF will
>> automatically do the right thing for the second set of changes (in your case
>> a delete).
>>
>> I'm trying to help...but wait for Chuck Hill's response before you commit
>> that to memory. :P
>>
>
>
> Done. :-)
>
> Chuck
>
>  On Tue, Oct 27, 2009 at 4:20 PM, Ricardo J. Parada <[email protected]>
>> wrote:
>> Resending with some typos fixed... :-)
>>
>> Hi,
>>
>> Let's say you have to-many relationship between two entities:  Order <-->>
>> OrderItem.  The to-many relationship is called "items" and "Owns
>> Desintation" is checked.
>>
>> Test #1:  Create an Order and OrderItem and insert both into an editing
>> context.  Then add the item to the order using
>> order.addObjectToBothSidesOfRelationshipWithKey(item, "items").  Then
>> removeObjectFromBothSidesOfRelationshipWithKey(item, "items") to remove the
>> item.  Then save the editing context.
>>
>> Result:   EOF attempts to save both the order and the orphan item.
>> Expected Result:  I thought EOF would only attempt to save the order but
>> not the item removed from the "items" to-many.
>>
>> Test #2: Fetch an existing order with one item from the database.  Then
>> order.removeObjectFromBothSidesOfRelationshipWithKey(item, "items").  Save
>> the editing context.
>>
>> Result:  EOF deletes the item that was removed from the "items" to-many.
>>
>> Is this how it's supposed to work?
>>
>> Thanks,
>> Ricardo
>>
>>
>>  _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      ([email protected])
>> Help/Unsubscribe/Update your Subscription:
>>
>> http://lists.apple.com/mailman/options/webobjects-dev/varscsak%40smarthealth.com
>>
>> This email sent to [email protected]
>>
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      ([email protected])
>> Help/Unsubscribe/Update your Subscription:
>>
>> http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net
>>
>> This email sent to [email protected]
>>
>
> --
> Chuck Hill             Senior Consultant / VP Development
>
> Practical WebObjects - for developers who want to increase their overall
> knowledge of WebObjects or who are trying to solve specific problems.
> http://www.global-village.net/products/practical_webobjects
>
>
>
>
>
>
>
>
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to