protected void CopyTo(ORMGOUserGroup x, NHibernate.ISession session)
        {
            x.User = this.User != null?session.Load <ORMGOUser>(this.User.Id) : (this.GOUserId != null ? session.Load <ORMGOUser>(this.GOUserId) : null);

            x.GOUserId = this.User != null ? this.User.Id : GOUserId;

            x.Group = this.Group != null?session.Load <ORMGOGroup>(this.Group.Name) : (this.GOGroupName != null ? session.Load <ORMGOGroup>(this.GOGroupName) : null);

            x.GOGroupName = this.Group != null ? this.Group.Name : GOGroupName;
        }
        private void Evict(ORMGOUserGroup result, NHibernate.ISession session)
        {
            foreach (var entity in session.GetSessionImplementation().PersistenceContext.EntitiesByKey.Values.ToArray())
            {
                var evictee = entity as ORMGOUserGroup;

                if (evictee != null && evictee.CompositeIdentity.Equals(result.CompositeIdentity))
                {
                    session.Evict(evictee);
                }
            }
        }
        public override IORMEntity ToORMEntity()
        {
            var session = NHibernateSessionController.GetCurrentSession();

            var result = new ORMGOUserGroup();

            CopyTo(result, session);

            // Ensure no copy of result (instance with same key) in session
            Evict(result, session);

            return(result);
        }