Given the other error that you emailed me directly, I suspect now that you've simply got more than one version of one or more of your own assembly in memory. This is often the explanation when you get these strange .NET errors.

Given the other error that you emailed me directly, I suspect now that you've simply got more than one version of one or more of your own assembly in memory. This is often the explanation when you get these strange .NET errors.

Not sure about that. It also happens in production. How would I know / solve this? (I know this is probably not NO specific - I mean my own assembly version problem)

However, it might be possible to still use the second pattern that I gave. i.e. add a NotPersisted property to AddressDetail of type Customer, but called, for clarity, 'CreatingCustomer'. Then in Persisting (or Persisted) call CreatingCustomer.Addresses.Add(this).

From discussion: http://nakedobjects.codeplex.com/discussions/361661

This worked fine.

However, for some other reason, I now had to turn on that transient entities be stored on the session. That is what is breaking the above pattern.

When I turn it off, then the above pattern works. But I need the transients on the session for other requirements.

Well I still think this might be to do with multiple versions of some assembly - the store transients on session might just happen to be what surfaces the conflict between the versions. When you re-deployed - did you make sure
that you cleaned out any old assemblies from the server?