Пример #1
0
        /// <summary>
        /// Настройка Nhibernate только с Fluent конфигураций.
        /// </summary>
        /// <param name="assemblies">Assemblies.</param>
        public static void ConfigureOrm(FluentNHibernate.Cfg.Db.IPersistenceConfigurer database, System.Reflection.Assembly[] assemblies, Action <Configuration> exposeConfiguration = null)
        {
            fluenConfig = Fluently.Configure().Database(database);

            fluenConfig.Mappings(m => {
                foreach (var ass in assemblies)
                {
                    m.FluentMappings.AddFromAssembly(ass);
                }
            });

            var trackerListener = new GlobalUowEventsTracker();

            fluenConfig.ExposeConfiguration(cfg => {
                cfg.AppendListeners(NHibernate.Event.ListenerType.PostLoad, new[] { trackerListener });
                cfg.AppendListeners(NHibernate.Event.ListenerType.PreLoad, new[] { trackerListener });
                cfg.AppendListeners(NHibernate.Event.ListenerType.PostDelete, new[] { trackerListener });
                cfg.AppendListeners(NHibernate.Event.ListenerType.PostUpdate, new[] { trackerListener });
                cfg.AppendListeners(NHibernate.Event.ListenerType.PostInsert, new[] { trackerListener });
            });

            if (exposeConfiguration != null)
            {
                fluenConfig.ExposeConfiguration(exposeConfiguration);
            }

            Sessions = fluenConfig.BuildSessionFactory();
        }
Пример #2
0
        public virtual void Commit()
        {
            if (transaction == null || !transaction.IsActive)
            {
                logger.Warn("Попытка комита закрытой транзацкии.");
                return;
            }

            try {
                transaction.Commit();

                IsNew = false;
                GlobalUowEventsTracker.OnPostCommit(this);
            } catch (Exception ex) {
                logger.Error(ex, "Исключение в момент комита.");
                if (transaction.IsActive)
                {
                    transaction.Rollback();
                }
                throw;
            } finally {
                transaction.Dispose();
                transaction = null;
            }
        }
Пример #3
0
 public static void Init()
 {
     if (instance != null)
     {
         return;
     }
     //Подписываемся на события глобально
     instance = new BusinessObjectPreparer();
     GlobalUowEventsTracker.RegisterGlobalListener(instance);
 }
Пример #4
0
        /// <summary>
        /// Вызываем инициализацию механизма подписки на обновления.
        /// </summary>
        public static void Enable()
        {
            if (Instance != null)
            {
                return;
            }

            var listner = new AppLevelChangeListener();

            GlobalUowEventsTracker.RegisterGlobalListener(listner);
            SingleUowEventsTracker.RegisterSingleUowListnerFactory(listner);

            Instance = listner;
        }