public static Configuration RegisterDisableAutoDirtyCheckListeners(this Configuration configuration)
        {
            NHibernate.Event.EventListeners listeners = configuration.EventListeners;
            var readOnlyEntityListener = new ResetReadOnlyEntityListener();
            var readOnlyEntityLoadListener = new SetReadOnlyEntityPostLoadListener();
            listeners.PersistEventListeners =
                new[] {readOnlyEntityListener}.Concat(listeners.PersistEventListeners).ToArray();
            listeners.MergeEventListeners =
                new[] {readOnlyEntityListener}.Concat(listeners.MergeEventListeners).ToArray();
            listeners.UpdateEventListeners =
                new[] {readOnlyEntityListener}.Concat(listeners.UpdateEventListeners).ToArray();
            listeners.SaveOrUpdateEventListeners =
                new[] {readOnlyEntityListener}.Concat(listeners.SaveOrUpdateEventListeners).ToArray();
            listeners.DeleteEventListeners =
                new[] {new ResetReadOnlyEntityDeleteListener()}.Concat(listeners.DeleteEventListeners).ToArray();
            listeners.PostLoadEventListeners =
                new[] {readOnlyEntityLoadListener}.Concat(listeners.PostLoadEventListeners).ToArray();
            listeners.LockEventListeners =
                listeners.LockEventListeners.Concat(new[] {readOnlyEntityLoadListener}).ToArray();

            return configuration;
        }
        public static Configuration RegisterDisableAutoDirtyCheckListeners(this Configuration configuration)
        {
            NHibernate.Event.EventListeners listeners = configuration.EventListeners;
            var readOnlyEntityListener     = new ResetReadOnlyEntityListener();
            var readOnlyEntityLoadListener = new SetReadOnlyEntityPostLoadListener();

            listeners.PersistEventListeners =
                new[] { readOnlyEntityListener }.Concat(listeners.PersistEventListeners).ToArray();
            listeners.MergeEventListeners =
                new[] { readOnlyEntityListener }.Concat(listeners.MergeEventListeners).ToArray();
            listeners.UpdateEventListeners =
                new[] { readOnlyEntityListener }.Concat(listeners.UpdateEventListeners).ToArray();
            listeners.SaveOrUpdateEventListeners =
                new[] { readOnlyEntityListener }.Concat(listeners.SaveOrUpdateEventListeners).ToArray();
            listeners.DeleteEventListeners =
                new[] { new ResetReadOnlyEntityDeleteListener() }.Concat(listeners.DeleteEventListeners).ToArray();
            listeners.PostLoadEventListeners =
                new[] { readOnlyEntityLoadListener }.Concat(listeners.PostLoadEventListeners).ToArray();
            listeners.LockEventListeners =
                listeners.LockEventListeners.Concat(new[] { readOnlyEntityLoadListener }).ToArray();

            return(configuration);
        }