I encountered the same problem after upgrading nHibernate to 3.3 (from 3.1), as well as related libraries (including FluentNhibernate). I have a parent object with a child collection, and when modifying the child collection, it throws the same exception that you received (with the property name nonexistant "_Namespace", where the "namespace" was the first part of my actual namespace).
In our case, switching to SaveOrUpdate () is not an option, since we really have a version of this object loaded into the session, so we need Merge ().
I do not know what other similarities may be. For us, this is a parent with a child collection using FluentNhibernate. The mapping of the parent is Cascade.AllDeleteOrphan () for the child, and for the child, the parent, Cascade.None ().
Unfortunately, I cannot find any other messages about this error, so the solution for us was to simply return to nHibernate 3.1 (and its associated binaries such as FluentNhibernate and Iesi.Collections). This is the only change, and then it works great.
Update by bug registered with JIRA [3234].
An error has been registered in JIRA. The question has not yet received any priority. Perhaps if you encounter this problem, you can create an account and vote to fix the error. https://nhibernate.jira.com/browse/NH-3234
Workaround update for JIRA error [3234].
According to Ondrej's comment about the error, overriding the standard merge listener in the session configuration using this code solves the problem at the moment. I am sure that a workaround will be published shortly.
public class UniDirectionalMergeFixListener : DefaultMergeEventListener { protected override IDictionary GetMergeMap(object anything) { var cache = (EventCache)anything; var result = IdentityMap.Instantiate(cache.Count); foreach (DictionaryEntry entry in cache) result[entry.Value] = entry.Key; return result; } }