David,

In at least one place in your code you are abusing EOF. This makes EOF very cranky and, in return, it messes with your head. Play nice and your problems will go away. :-)

First, check very carefully that you are not violating one of the EOF Commandments: http://en.wikibooks.org/wiki/Programming:WebObjects/EOF/Using_EOF/ The_EOF_Commandments

Please don't respond that you are violating one of them and it is just fine, because that is quite obviously not true. I mention this because this is often the first response of commandment violators. Thou shalt not. Really. :-)

Next, enable NSLog.DebugGroupMultithreading and run through the app. Look for exception traces in the log that indicate unlocked access. Unlocked access is like playing Russian Roulette with one empty chamber. Fix them.


Chuck



On Mar 1, 2007, at 9:40 AM, David Haggerty wrote:

I have come across a rather strange problem. Changes to an EO are not saving properly. In memory it shows that I have changed the EO but when I look at the editingContext, it doesn't show it in _unprocessedChanges. It also doesn't save the change that I am making. I finally realized that if I call ec.committedSnapshotForObject(ecr); BEFORE I make any changes to the object, it works fine.

Here's an example of the code:

EOEditingContext ec = new EOEditingContext();
//   If I uncomment this, it saves properly.
//   ec.committedSnapshotForObject(ecr);
EmailCommunicationRecipient ecr = (EmailCommunicationRecipient) EOUtilities.faultWithPrimaryKeyValue(ec, "EmailCommunicationRecipient", new Integer(11312312));
ecr.setDateSent(new NSTimestamp());
ec.saveChanges();

Strangely, if I do the following, the dateSent won't save but the status will:

EOEditingContext ec = new EOEditingContext();
EmailCommunicationRecipient ecr = (EmailCommunicationRecipient) EOUtilities.faultWithPrimaryKeyValue(ec, "EmailCommunicationRecipient", new Integer(11312312));
ecr.setDateSent(new NSTimestamp());
ec.committedSnapshotForObject(ecr);
addObjectToBothSidesOfRelationshipWithKey(aValue, "toCurrentStatus");
ec.saveChanges();

The only thing special with EMailCommunicationRecipient is that it is a single table inhertance in the model.

EMailCommunicationRecipient extends CommunicationRecipient which extends AbstractCommunicationRecipient.

Until I figure out what's going on, I was going to just add the following (because I just don't know how many places this is happening). Will this add much overhead?:

public void awakeFromFetch(EOEditingContext ec){
    super.awakeFromFetch(ec);
    ec.committedSnapshotForObject(ecr);
}

Thanks,
David
 _______________________________________________
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]

--

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