public void TestSerialiseLazyCollection() { Person p = BusinessObjectFactory.CreateAndFillPerson(); Address addr = new Address { Address1 = "12 Street", Suburb = "Suburb", State = "QLD", Postcode = "1234" }; p.Addresses.Add(addr); PersonType ptype = new PersonType { ID = "contact", Description = "General Contact" }; ptype.Save(SaveMode.Flush); p.ContactType = ptype; p.Save(SaveMode.Flush); p.Evict(); ptype.Evict(); addr.Evict(); Person loadedPerson = Person.Load(p.ID, session); Person newPerson = loadedPerson.Clone(); loadedPerson.Evict(); //the only way so far I can see is to re-attach collections is to lock/attach the base entity session.Lock(newPerson, NHibernate.LockMode.None); int addrCount = newPerson.Addresses.Count; Assert.Equal(p.ID, newPerson.ID); Assert.Equal("contact", newPerson.ContactType.ID); Assert.Equal(1, addrCount); }