Really, IIRC, the code:

ec.setFetchTimestamp( System.currentTimeMillis() );
ec.refreshAllObjects();

Try it. If it works, great. If not, let us know ;-)

Kieran

On Feb 11, 2010, at 9:05 AM, Mike Schrag wrote:

> invalidateAllObjects can break other EC's that are currently editing objects 
> because you throw away the backing snapshots from underneath them ...
> 
> ms
> 
> On Feb 11, 2010, at 8:45 AM, Jean-Francois Veillette wrote:
> 
>> I'm surprised no one mentionned ec.invalidateAllObjects() coupled with 
>> refetching arrays you might have in memory (displaygroup and such for 
>> example), as far as I understand, it's the only solution that will take care 
>> of relationship and get rid of deleted objects (faults will still be in 
>> memory but at least refetching relationship and arrays will avoid pointing 
>> to them).
>> 
>> - jfv
>> 
>> Le 10-02-08 à 14:20, Mike Schrag a écrit :
>> 
>>> yeah, this is why i'm suspicious that we'll see a generalized Wonder 
>>> implementation of this .... definitely some tricks we could do, like what 
>>> you're saying -- just changing attributes that don't participate in 
>>> relationships, inverse relationships, or restricting qualifiers could be a 
>>> relatively easy update. changing anything that participates in a 
>>> relationship would be sort of a pain -- you have to do that pre-fetch thing 
>>> first and then you'd have to fake notifications afterwards. for delete, 
>>> it's even nastier.
>>> 
>>> i think you take advantage of the knowledge you have of your special case 
>>> and custom write this. it's topics like these that make me sometimes think 
>>> the everything-is-cached approach is overkill. i'd love to see a variant of 
>>> EOF that lets you write like a stateless framework in cases where you don't 
>>> want all the snapshotting stuff.
>>> 
>>> ms
>>> 
>>> On Feb 8, 2010, at 2:13 PM, Anjo Krank wrote:
>>> 
>>>> Mostly, it depends on what you are doing. Changing, say, status=done is 
>>>> different from owner=<people pk:1>, because the one only changes internal 
>>>> state, the other touches relationships.
>>>> 
>>>> Then again, all your *other* ECs in all *other* instances won't get 
>>>> notified anyway (unless you use the ERCNF). So your code needs to be able 
>>>> to handle that problem anyway.
>>>> 
>>>> Cheers, Anjo
>>>> 
>>>> 
>>>> 
>>>> Am 08.02.2010 um 20:02 schrieb Mike Schrag:
>>>> 
>>>>>> Mike's precautionary measure is ticking at the top of my mind... so may 
>>>>>> be for the time being I will just call ec.refreshAllObjects() just to be 
>>>>>> integral, consistent, simple and more importantly let not annoy EOF by 
>>>>>> mistake!!!
>>>>> my precautionary tale is about using the methods you're using at all 
>>>>> (i.e. the updateRowsDescribedByQualifier) ... you're sneaking behind EOF 
>>>>> and basically doing direct DB operations. you're then trying to come back 
>>>>> and expect an easy way for EOF's caches to be in-sync with your changes. 
>>>>> the general case here is that you can't do it without tossing all your 
>>>>> snapshots, because you have no idea if the snapshots in your cache are 
>>>>> actually in-sync with the current state of the database when you executed 
>>>>> your update. there's a reason EOF does what it does when you perform all 
>>>>> of these operations, and it's because it actually needs to.
>>>>> 
>>>>> probably the closest-to-right way to do this is to prefetch the rows that 
>>>>> would be updated or deleted, perform the operations, then use the GIDs to 
>>>>> ... i guess manually do everything that EOF would have done. you're going 
>>>>> to lose all the inverse relationship updating, and you're going to lose 
>>>>> delete rules, etc. also, by fetching into the EC beforehand, you're 
>>>>> basically taking the performance hit that you were probably trying to 
>>>>> avoid in the first place by using those API's.
>>>>> 
>>>>> so i doubt there's a simple generalized API that will go into Wonder for 
>>>>> this -- i'm not people would be happy with the performance profile of it.
>>>>> 
>>>>> ms
>> 
> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/kieran_lists%40mac.com
> 
> This email sent to kieran_li...@mac.com

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to