/// <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(); }
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; } }
public static void Init() { if (instance != null) { return; } //Подписываемся на события глобально instance = new BusinessObjectPreparer(); GlobalUowEventsTracker.RegisterGlobalListener(instance); }
/// <summary> /// Вызываем инициализацию механизма подписки на обновления. /// </summary> public static void Enable() { if (Instance != null) { return; } var listner = new AppLevelChangeListener(); GlobalUowEventsTracker.RegisterGlobalListener(listner); SingleUowEventsTracker.RegisterSingleUowListnerFactory(listner); Instance = listner; }