Esempio n. 1
0
 public MySqlCommandInterpreter(
     ShellSettings shellSettings,
     ISessionFactoryHolder sessionFactoryHolder)
 {
     _shellSettings = shellSettings;
     _dialectLazy   = new Lazy <Dialect>(() => Dialect.GetDialect(sessionFactoryHolder.GetConfiguration().Properties));
 }
 public CustomMemberBindingProvider(
     IRepository <MemberBindingRecord> repository,
     ISessionFactoryHolder sessionFactoryHolder)
 {
     _repository           = repository;
     _sessionFactoryHolder = sessionFactoryHolder;
 }
Esempio n. 3
0
        private static void AddXmlToNHibernateCfg(ISessionFactoryHolder holder, ActiveRecordModelCollection models)
        {
            XmlGenerationVisitor xmlVisitor           = new XmlGenerationVisitor();
            AssemblyXmlGenerator assemblyXmlGenerator = new AssemblyXmlGenerator();
            ISet assembliesGeneratedXmlFor            = new HashedSet();

            foreach (ActiveRecordModel model in models)
            {
                Configuration config = holder.GetConfiguration(holder.GetRootType(model.Type));

                if (config == null)
                {
                    throw new ActiveRecordException(
                              string.Format(
                                  "Could not find configuration for {0} or its root type {1} this is usually an indication that the configuration has not been setup correctly.",
                                  model.Type, holder.GetRootType(model.Type)));
                }

                if (!model.IsNestedType && !model.IsDiscriminatorSubClass && !model.IsJoinedSubClass)
                {
                    xmlVisitor.Reset();
                    xmlVisitor.CreateXml(model);

                    String xml = xmlVisitor.Xml;

                    if (xml != String.Empty)
                    {
                        AddXmlString(config, xml, model);
                    }
                }
            }
        }
 public SessionLocator(
     ISessionFactoryHolder sessionFactoryHolder, 
     IEnumerable<ISessionInterceptor> interceptors) {
     _sessionFactoryHolder = sessionFactoryHolder;
     _interceptors = interceptors;
     Logger = NullLogger.Instance;
 }
Esempio n. 5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TransactionScope"/> class.
        /// </summary>
        public TransactionScope(
            TransactionMode mode         = TransactionMode.New,
            IsolationLevel isolation     = IsolationLevel.Unspecified,
            OnDispose ondispose          = OnDispose.Commit,
            ISessionScope parent         = null,
            ISessionFactoryHolder holder = null,
            IThreadScopeInfo scopeinfo   = null
            )
            : base(FlushAction.Config, isolation, ondispose, parent, holder, scopeinfo)
        {
            this.mode = mode;

            parentTransactionScope = ParentScope as TransactionScope;

            if (mode == TransactionMode.New)
            {
                if (parentTransactionScope != null)
                {
                    parentTransactionScope = null;
                    ParentScope            = null;
                }
                else
                {
                    parentTransactionScope = null;
                }
            }
        }
Esempio n. 6
0
 public SchemaCommandGenerator(
     ISessionFactoryHolder sessionFactoryHolder,
     IDataServicesProviderFactory dataServicesProviderFactory)
 {
     _sessionFactoryHolder        = sessionFactoryHolder;
     _dataServicesProviderFactory = dataServicesProviderFactory;
 }
Esempio n. 7
0
 public SessionLocator(
     ISessionFactoryHolder sessionFactoryHolder,
     ITransactionManager transactionManager) {
     _sessionFactoryHolder = sessionFactoryHolder;
     _transactionManager = transactionManager;
     Logger = NullLogger.Instance;
 }
Esempio n. 8
0
        private void DoDelete()
        {
            ISessionFactoryHolder factoryHolder = ActiveRecordMediator <ModelTreeNodeEntityBase <T> > .GetSessionFactoryHolder();

            ISession session = factoryHolder.CreateSession(this.GetType());

            // 删除子节点及自身节点
            string hql = String.Format("DELETE FROM {0} WHERE {2} LIKE '%{1}%' OR {3} = '{1}' ", EntityBase <T> .ClassName, this.ID,
                                       Prop_Path, Prop_ID);

            DataHelper.HqlUpdate(session, hql);

            try
            {
                // 修改后继节点位置信息
                hql = String.Format("UPDATE {0} SET {3} = {3} - {1} WHERE {4} = ? AND {3} > {2}",
                                    EntityBase <T> .ClassName, SortInterval, this.SortIndex,
                                    Prop_SortIndex, Prop_ParentID);

                DataHelper.HqlUpdate(session, hql, this.ParentID);
            }
            catch { };
            // 检查修改父节点IsLeaf属性
            if (this.Parent != null)
            {
                this.Parent.CheckSetIsLeaf(this.ID);
            }

            System.Diagnostics.Debug.Assert(true);
        }
 public SchemaCommandGenerator(
     ISessionFactoryHolder sessionFactoryHolder,
     IDataServicesProviderFactory dataServicesProviderFactory)
 {
     _sessionFactoryHolder = sessionFactoryHolder;
     _dataServicesProviderFactory = dataServicesProviderFactory;
 }
 public CustomSessionLocator(
     ISessionFactoryHolder sessionFactoryHolder,
     bool enableTransaction) {
     _sessionFactoryHolder = sessionFactoryHolder;
     _enableTransaction = enableTransaction;
     Logger = NullLogger.Instance;
 }
Esempio n. 11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="sessionFactoryHolder"></param>
 public SessionLocator(
     ISessionFactoryHolder sessionFactoryHolder)
 {
     _transactionManager   = new TransactionManager();
     _sessionFactoryHolder = sessionFactoryHolder;
     Logger = LoggerFactory.GetLog();
 }
Esempio n. 12
0
        public DatabaseManager(
            ISessionFactoryHolder sessionFactoryHolder, 
            IDataMigrationInterpreter dataMigrationInterpreter) {

            _sessionFactoryHolder = sessionFactoryHolder;
            _dataMigrationInterpreter = dataMigrationInterpreter;
        }
Esempio n. 13
0
 private static void RaiseSessionFactoryHolderCreated(ISessionFactoryHolder holder)
 {
     if (SessionFactoryHolderCreated != null)
     {
         SessionFactoryHolderCreated(holder);
     }
 }
        public static ISession GetARSession()
        {
            ISessionFactoryHolder holder = ActiveRecordMediator.GetSessionFactoryHolder();
            var factory = holder.GetSessionFactory(typeof(ActiveRecordBase));

            return(factory.OpenSession());
        }
Esempio n. 15
0
 public DatabaseManager(
     ISessionFactoryHolder sessionFactoryHolder,
     IDataMigrationInterpreter dataMigrationInterpreter)
 {
     _sessionFactoryHolder     = sessionFactoryHolder;
     _dataMigrationInterpreter = dataMigrationInterpreter;
 }
        private void DoInitialization()
        {
            if (InitializationAware == null && IoC.IsInitialized)
            {
                if (IoC.Container.Kernel.HasComponent(typeof(INHibernateInitializationAware)))
                {
                    InitializationAware = IoC.ResolveAll <INHibernateInitializationAware>();
                }
            }

            List <Type> registerdTypes = new List <Type>();

            ActiveRecordStarter.SessionFactoryHolderCreated += delegate(ISessionFactoryHolder holder)
            {
                holder.OnRootTypeRegistered += delegate(object sender, Type rootType)
                {
                    registerdTypes.Add(rootType);
                };
            };

            ActiveRecordStarter.MappingRegisteredInConfiguration += delegate(ISessionFactoryHolder holder)
            {
                if (InitializationAware != null)
                {
                    foreach (Configuration cfg in holder.GetAllConfigurations())
                    {
                        foreach (INHibernateInitializationAware initializer in InitializationAware)
                        {
                            initializer.Configured(cfg);
                        }
                    }
                }
            };

            ActiveRecordStarter.ResetInitializationFlag();
            if (InitializationAware != null)
            {
                foreach (INHibernateInitializationAware hibernateInitializationAware in InitializationAware)
                {
                    hibernateInitializationAware.BeforeInitialization();
                }
            }

            ActiveRecordStarter.Initialize(assemblies, configurationSource);
            ISessionFactoryHolder sessionFactoryHolder = ActiveRecordMediator.GetSessionFactoryHolder();

            if (InitializationAware != null)
            {
                foreach (Type type in registerdTypes)
                {
                    Configuration   configuration = sessionFactoryHolder.GetConfiguration(type);
                    ISessionFactory factory       = sessionFactoryHolder.GetSessionFactory(type);
                    foreach (INHibernateInitializationAware initializer in InitializationAware)
                    {
                        initializer.Initialized(configuration, factory);
                    }
                }
            }
        }
Esempio n. 17
0
        /// <summary>
        /// Initialize the mappings using the configuration and
        /// the list of types
        /// </summary>
        public static void Initialize(IConfigurationSource source, params Type[] types)
        {
            lock (lockConfig)
            {
                if (isInitialized)
                {
                    throw new ActiveRecordInitializationException("You can't invoke ActiveRecordStarter.Initialize more than once");
                }

                if (source == null)
                {
                    throw new ArgumentNullException("source");
                }

                if (types == null)
                {
                    throw new ArgumentNullException("types");
                }

                foreach (Type type in types)
                {
                    registeredAssemblies.Add(type.Assembly);
                }

                registeredTypes = new Dictionary <Type, string>();

                configSource = source;

                // First initialization
                ISessionFactoryHolder holder = CreateSessionFactoryHolderImplementation(source);

                holder.ThreadScopeInfo = CreateThreadScopeInfoImplementation(source);

                RaiseSessionFactoryHolderCreated(holder);

                ActiveRecordBase.holder = holder;
                ActiveRecordModel.type2Model.Clear();
                ActiveRecordModel.isDebug             = source.Debug;
                ActiveRecordModel.isLazyByDefault     = source.IsLazyByDefault;
                ActiveRecordModel.pluralizeTableNames = source.PluralizeTableNames;

                RegisterEventListeners(types);

                if (configSource.Searchable)
                {
                    contributors.Add(new NHSearchContributor());
                }

                // Sets up base configuration
                SetUpConfiguration(source, typeof(ActiveRecordBase), holder);

                RegisterTypes(holder, source, types, true);

                // If the configuration uses the AR ByteCode, do not autoinitialize proxies.
                AutoinitializeProxy = !UseARByteCode(configSource, types);

                isInitialized = true;
            }
        }
Esempio n. 18
0
        public Migrations(ISessionFactoryHolder sessionFactoryHolder,
                          ShellSettings shellSettings)
        {
            _shellSettings = shellSettings;
            var configuration = sessionFactoryHolder.GetConfiguration();

            _dialect = Dialect.GetDialect(configuration.Properties);
        }
Esempio n. 19
0
 public CustomSessionLocator(
     ISessionFactoryHolder sessionFactoryHolder,
     bool enableTransaction)
 {
     _sessionFactoryHolder = sessionFactoryHolder;
     _enableTransaction    = enableTransaction;
     Logger = NullLogger.Instance;
 }
Esempio n. 20
0
 public SessionLocator(ISessionFactoryHolder sessionFactoryHolder,
                       IEnumerable <ISessionInterceptor> interceptors)
 {
     _sessionFactoryHolder = sessionFactoryHolder;
     _interceptors         = interceptors;
     Logger         = NullLogger.Instance;
     IsolationLevel = IsolationLevel.ReadCommitted;
 }
Esempio n. 21
0
 public SessionLocator(
     ISessionFactoryHolder sessionFactoryHolder,
     ITransactionManager transactionManager)
 {
     _sessionFactoryHolder = sessionFactoryHolder;
     _transactionManager   = transactionManager;
     Logger = NullLogger.Instance;
 }
 public SessionLocator(
     ISessionFactoryHolder sessionFactoryHolder,
     IEnumerable <ISessionInterceptor> interceptors)
 {
     _sessionFactoryHolder = sessionFactoryHolder;
     _interceptors         = interceptors;
     Logger = NullLogger.Instance;
 }
 public SessionLocator(
     ISessionFactoryHolder sessionFactoryHolder, 
     IEnumerable<ISessionInterceptor> interceptors) {
     _sessionFactoryHolder = sessionFactoryHolder;
     _interceptors = interceptors;
     Logger = NullLogger.Instance;
     IsolationLevel = IsolationLevel.ReadCommitted;
 }
Esempio n. 24
0
 public SessionLocator(
     ISessionFactoryHolder sessionFactoryHolder,
     IWorkEnvironment workEnvironment,
     ILogger logger)
 {
     _sessionFactoryHolder = sessionFactoryHolder;
     _workEnvironment = workEnvironment;
     Logger = logger;
 }
Esempio n. 25
0
        private Configuration BuildConfiguration(IConfigurationSource source)
        {
            ISessionFactoryHolder holder = null;

            ActiveRecordStarter.SessionFactoryHolderCreated += h => holder = h;
            ActiveRecordStarter.Initialize(source);

            return(holder.GetAllConfigurations().Single());
        }
        public MySqlCommandInterpreter(
            ShellSettings shellSettings,
            ISessionFactoryHolder sessionFactoryHolder)
        {
            _shellSettings = shellSettings;
            var configuration = sessionFactoryHolder.GetConfiguration();

            _dialect = Dialect.GetDialect(configuration.Properties);
        }
        public void Dispose()
        {
            ISessionFactoryHolder holder = ActiveRecordMediator.GetSessionFactoryHolder();

            foreach (ISessionFactory factory in holder.GetSessionFactories())
            {
                factory.Dispose();
            }
        }
Esempio n. 28
0
 public SessionLocator(
     ISessionFactoryHolder sessionFactoryHolder,
     IWorkEnvironment workEnvironment,
     ILogger logger)
 {
     _sessionFactoryHolder = sessionFactoryHolder;
     _workEnvironment      = workEnvironment;
     Logger = logger;
 }
Esempio n. 29
0
 /// <summary>
 /// Intended to be used only by test cases
 /// </summary>
 public static void ResetInitialization()
 {
     // Make sure we start with it enabled
     Environment.UseReflectionOptimizer = true;
     if (Holder != null)
     {
         Holder.Dispose();
     }
     Holder = null;
 }
Esempio n. 30
0
        public SafeSessionProxy(ISessionFactoryHolder holder, ISession innerSession)
        {
            if (innerSession == null)
            {
                throw new ArgumentNullException("innerSession");
            }

            this.innerSession = innerSession;
            this.holder       = holder;
        }
        private static void RaiseSessionFactoryHolderCreated(ISessionFactoryHolder holder)
        {
            SessionFactoryHolderDelegate evtDelegate =
                (SessionFactoryHolderDelegate)events[SessionFactoryHolderCreatedEvent];

            if (evtDelegate != null)
            {
                evtDelegate(holder);
            }
        }
        public SessionLocator(
            ISessionFactoryHolder sessionFactoryHolder,
            Func<IContentManagerSession> contentManagerSessionFactory,
            IEnumerable<ISessionInterceptor> interceptors) {
            _sessionFactoryHolder = sessionFactoryHolder;
            _interceptors = interceptors;
            _contentManagerSessionFactory = contentManagerSessionFactory;

            Logger = NullLogger.Instance;
            IsolationLevel = IsolationLevel.ReadCommitted;
        }
        public ISession GetCurrentSessionFor(Type typeOfEntity)
        {
            ISessionScope scope = SessionScope.Current;

            if (scope == null)
            {
                throw new InvalidOperationException("You are not in a unit of work");
            }
            ISessionFactoryHolder holder = ActiveRecordMediator.GetSessionFactoryHolder();

            return(holder.CreateSession(typeOfEntity));
        }
Esempio n. 34
0
 public SchemaUpdateService(
     IDynamicAssemblyBuilder dynamicAssemblyBuilder,
     ISessionFactoryHolder sessionFactoryHolder,
     ShellSettings shellSettings,
     ISessionLocator sessionLocator,
     IEnumerable<ICommandInterpreter> commandInterpreters,
     IReportsCoordinator reportsCoordinator) {
     _dynamicAssemblyBuilder = dynamicAssemblyBuilder;
     _sessionFactoryHolder = sessionFactoryHolder;
     var interpreter = new DefaultDataMigrationInterpreter(shellSettings, sessionLocator, commandInterpreters, sessionFactoryHolder, reportsCoordinator);
     _schemaBuilder = new SchemaBuilder(interpreter, "", s => s.Replace(".", "_"));
 }
Esempio n. 35
0
        public SessionLocator(
            ISessionFactoryHolder sessionFactoryHolder,
            Func <IContentManagerSession> contentManagerSessionFactory,
            IEnumerable <ISessionInterceptor> interceptors)
        {
            _sessionFactoryHolder         = sessionFactoryHolder;
            _interceptors                 = interceptors;
            _contentManagerSessionFactory = contentManagerSessionFactory;

            Logger         = NullLogger.Instance;
            IsolationLevel = IsolationLevel.ReadCommitted;
        }
Esempio n. 36
0
        public BindingController(
            IRepository<MemberBindingRecord> repository,
            IOrchardServices services,
            IShapeFactory shapeFactory,
            ISessionFactoryHolder sessionFactoryHolder) {
            _repository = repository;
            _sessionFactoryHolder = sessionFactoryHolder;
            Shape = shapeFactory;
            Services = services;

            T = NullLocalizer.Instance;
        }
        private ISession GetSession()
        {
            ISessionScope scope = SessionScope.Current;

            if (scope == null)
            {
                throw new InvalidOperationException("You should be in a SessionScope()");
            }
            ISessionFactoryHolder holder = ActiveRecordMediator.GetSessionFactoryHolder();

            return(holder.CreateSession(typeof(ActiveRecordBase)));
        }
Esempio n. 38
0
 public SchemaCommandGenerator(
     ISessionFactoryHolder sessionFactoryHolder,
     IExtensionManager extensionManager,
     ICompositionStrategy compositionStrategy,
     ShellSettings shellSettings,
     IDataServicesProviderFactory dataServicesProviderFactory) {
     _sessionFactoryHolder = sessionFactoryHolder;
     _extensionManager = extensionManager;
     _compositionStrategy = compositionStrategy;
     _shellSettings = shellSettings;
     _dataServicesProviderFactory = dataServicesProviderFactory;
 }
 public SchemaCommandGenerator(
     ISessionFactoryHolder sessionFactoryHolder,
     IExtensionManager extensionManager,
     ICompositionStrategy compositionStrategy,
     IConfigurationService configService,
     IDataServicesProviderFactory dataServicesProviderFactory)
 {
     _sessionFactoryHolder        = sessionFactoryHolder;
     _extensionManager            = extensionManager;
     _compositionStrategy         = compositionStrategy;
     _connection                  = configService.ConnectionSettings;
     _dataServicesProviderFactory = dataServicesProviderFactory;
 }
Esempio n. 40
0
        public BindingController(
            IRepository <MemberBindingRecord> repository,
            IOrchardServices services,
            IShapeFactory shapeFactory,
            ISessionFactoryHolder sessionFactoryHolder)
        {
            _repository           = repository;
            _sessionFactoryHolder = sessionFactoryHolder;
            Shape    = shapeFactory;
            Services = services;

            T = NullLocalizer.Instance;
        }
 public SchemaBuilderFactory(
     ShellSettings shellSettings,
     IReportsCoordinator reportsCoordinator,
     ISessionFactoryHolderFactory sessionFactoryHolderFactory,
     ISessionLocator sessionLocator,
     ISessionFactoryHolder sessionFactoryHolder)
 {
     _shellSettings = shellSettings;
     _reportsCoordinator = reportsCoordinator;
     _sessionFactoryHolderFactory = sessionFactoryHolderFactory;
     _sessionLocator = sessionLocator;
     _sessionFactoryHolder = sessionFactoryHolder;
 }
Esempio n. 42
0
 public SchemaCommandGenerator(
     ISessionFactoryHolder sessionFactoryHolder,
     IExtensionManager extensionManager,
     ICompositionStrategy compositionStrategy,
     ShellSettings shellSettings,
     IDataServicesProviderFactory dataServicesProviderFactory)
 {
     _sessionFactoryHolder        = sessionFactoryHolder;
     _extensionManager            = extensionManager;
     _compositionStrategy         = compositionStrategy;
     _shellSettings               = shellSettings;
     _dataServicesProviderFactory = dataServicesProviderFactory;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="DifferentDatabaseScope"/> class.
        /// </summary>
        public DifferentDatabaseScope(
            IDbConnection connection,
            FlushAction flushAction = FlushAction.Auto,
            ISessionScope parent = null,
            ISessionFactoryHolder holder = null,
            IThreadScopeInfo scopeinfo = null
            )
            : base(flushAction, parent: parent, holder: holder, scopeinfo: scopeinfo)
        {
            if (connection == null) throw new ArgumentNullException("connection");

            _connection = connection;
        }
Esempio n. 44
0
 public RouteController(
     IContentDefinitionManager contentDefinitionManager,
     IOrchardServices orchardServices,
     ISessionFactoryHolder sessionFactoryHolder,
     ShellSettings shellSettings,
     IAutorouteService autorouteService,
     IReportsCoordinator reportsCoordinator) {
     _contentDefinitionManager = contentDefinitionManager;
     _orchardServices = orchardServices;
     _sessionFactoryHolder = sessionFactoryHolder;
     _shellSettings = shellSettings;
     _autorouteService = autorouteService;
     _reportsCoordinator = reportsCoordinator;
 }
Esempio n. 45
0
 public RouteController(
     IContentDefinitionManager contentDefinitionManager,
     IOrchardServices orchardServices,
     ISessionFactoryHolder sessionFactoryHolder,
     ShellSettings shellSettings,
     IAutorouteService autorouteService) {
     _contentDefinitionManager = contentDefinitionManager;
     _orchardServices = orchardServices;
     _sessionFactoryHolder = sessionFactoryHolder;
     _shellSettings = shellSettings;
     _autorouteService = autorouteService;
     T = NullLocalizer.Instance;
     Logger = NullLogger.Instance;
 }
Esempio n. 46
0
 public TagService(IRepository<TagRecord> tagRepository,
                   IRepository<ContentTagRecord> contentTagRepository,
                   INotifier notifier,
                   IAuthorizationService authorizationService,
                   IOrchardServices orchardServices,
                   ISessionFactoryHolder sessionFactoryHolder) {
     _tagRepository = tagRepository;
     _contentTagRepository = contentTagRepository;
     _notifier = notifier;
     _authorizationService = authorizationService;
     _orchardServices = orchardServices;
     _sessionFactoryHolder = sessionFactoryHolder;
     Logger = NullLogger.Instance;
     T = NullLocalizer.Instance;
 }
Esempio n. 47
0
 public SiteResetTaskExecutor(
     IThemeService themeService, 
     ISiteThemeService siteThemeService,
     ISessionFactoryHolder sessionFactoryHolder,
     IVirtualPathProvider virtualPathProvider,
     ShellSettings shellSettings,
     ISessionLocator sessionLocator,
     IEnumerable<ICommandInterpreter> commandInterpreters,
     IReportsCoordinator reportsCoordinator)
 {
     _themeService = themeService;
     _siteThemeService = siteThemeService;
     _virtualPathProvider = virtualPathProvider;
     _sessionFactoryHolder = sessionFactoryHolder;
     var interpreter = new Coevery.Core.Services.DefaultDataMigrationInterpreter(shellSettings, sessionLocator, commandInterpreters, sessionFactoryHolder, reportsCoordinator);
     _schemaBuilder = new SchemaBuilder(interpreter, "", s => s.Replace(".", "_"));
     Logger=NullLogger.Instance;
 }
Esempio n. 48
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TransactionScope"/> class.
        /// </summary>
        public TransactionScope(
            TransactionMode mode = TransactionMode.New,
            IsolationLevel isolation = IsolationLevel.Unspecified,
            OnDispose ondispose = OnDispose.Commit,
            ISessionScope parent = null,
            ISessionFactoryHolder holder = null,
            IThreadScopeInfo scopeinfo = null
            )
            : base(FlushAction.Config, isolation, ondispose, parent, holder, scopeinfo)
        {
            this.mode = mode;

            parentTransactionScope = ParentScope as TransactionScope;

            if (mode == TransactionMode.New) {
                if (parentTransactionScope != null) {
                    parentTransactionScope = null;
                    ParentScope = null;
                } else {
                    parentTransactionScope = null;
                }
            }
        }
		private static ActiveRecordModelCollection BuildModels(ISessionFactoryHolder holder,
		                                                       IConfigurationSource source,
		                                                       IEnumerable<Type> types, bool ignoreProblematicTypes)
		{
			ActiveRecordModelBuilder builder = new ActiveRecordModelBuilder();

			builder.SetExtension(new ModelBuilderExtensionComposite(extensions));

			ActiveRecordModelCollection models = builder.Models;

			foreach(Type type in types)
			{
				if (ShouldIgnoreType(type))
				{
					if (ignoreProblematicTypes)
					{
						continue;
					}
					else
					{
						throw new ActiveRecordException(
							String.Format("Type `{0}` is registered already", type.FullName));
					}
				}
				else if (IsConfiguredAsRootType(type))
				{
					if (TypeDefinesADatabaseBoundary(type))
					{
						SetUpConfiguration(source, type, holder);
						continue;
					}
					else
					{
						throw new ActiveRecordException(
							string.Format(
								"Type `{0}` is not a valid root type.  Make sure it is abstract and does not define a table itself.",
								type.FullName));
					}
				}
				else if (!IsActiveRecordType(type))
				{
					if (ignoreProblematicTypes)
					{
						continue;
					}
					else
					{
						throw new ActiveRecordException(
							String.Format("Type `{0}` is not an ActiveRecord type. Use ActiveRecordAttributes to define one", type.FullName));
					}
				}

				if (type.ContainsGenericParameters)
				{
					// Owing to a restriction in NHibernate the reflection optimiser will not work
					// if we have generic types so turn it off. Do we have anywhere we could log this?
					Environment.UseReflectionOptimizer = false;
				}

				ActiveRecordModel model = builder.Create(type);

				if (model == null)
				{
					throw new ActiveRecordException(
						String.Format("ActiveRecordModel for `{0}` could not be created", type.FullName));
				}

				registeredTypes.Add(type, String.Empty);

				if (ModelCreated != null)
				{
					ModelCreated(model, source);
				}
			}

			return models;
		}
Esempio n. 50
0
		public WiringSession(ISessionFactoryHolder holder, ISessionFactory sessionFactory)
		{
			this.holder = holder;
			this.sessionFactory = sessionFactory;
		}
		private static void AddXmlToNHibernateCfg(ISessionFactoryHolder holder, ActiveRecordModelCollection models)
		{
			XmlGenerationVisitor xmlVisitor = new XmlGenerationVisitor();
			AssemblyXmlGenerator assemblyXmlGenerator = new AssemblyXmlGenerator();
			ISet assembliesGeneratedXmlFor = new HashedSet();
			foreach(ActiveRecordModel model in models)
			{
				Configuration config = holder.GetConfiguration(holder.GetRootType(model.Type));

				if (config == null)
				{
					throw new ActiveRecordException(
						string.Format(
							"Could not find configuration for {0} or its root type {1} this is usually an indication that the configuration has not been setup correctly.",
							model.Type, holder.GetRootType(model.Type)));
				}

				if (!model.IsNestedType && !model.IsDiscriminatorSubClass && !model.IsJoinedSubClass)
				{
					xmlVisitor.Reset();
					xmlVisitor.CreateXml(model);

					String xml = xmlVisitor.Xml;

					if (xml != String.Empty)
					{
						AddXmlString(config, xml, model);
					}
				}
			}
		}
		private static void SetUpConfiguration(IConfigurationSource source, Type type, ISessionFactoryHolder holder)
		{
			IConfiguration config = source.GetConfiguration(type);

			if (config != null)
			{
				Configuration nconf = CreateConfiguration(config);

				if (source.NamingStrategyImplementation != null)
				{
					Type namingStrategyType = source.NamingStrategyImplementation;

					if (!typeof(INamingStrategy).IsAssignableFrom(namingStrategyType))
					{
						String message =
							String.Format("The specified type {0} does " + "not implement the interface INamingStrategy",
							              namingStrategyType.FullName);

						throw new ActiveRecordException(message);
					}

					nconf.SetNamingStrategy((INamingStrategy) Activator.CreateInstance(namingStrategyType));
				}

				AddContributorsToConfig(type, nconf);
				holder.Register(type, nconf);
			}
		}
		private static void RaiseSessionFactoryHolderCreated(ISessionFactoryHolder holder)
		{
			if (SessionFactoryHolderCreated != null)
			{
				SessionFactoryHolderCreated(holder);
			}
		}
		private static void RegisterTypes(ISessionFactoryHolder holder, IConfigurationSource source, IEnumerable<Type> types,
		                                  bool ignoreProblematicTypes)
		{
			lock(lockConfig)
			{
				ActiveRecordModelCollection models = BuildModels(holder, source, types, ignoreProblematicTypes);

				GraphConnectorVisitor connectorVisitor = new GraphConnectorVisitor(models);
				connectorVisitor.VisitNodes(models);

				ModelsDelegate modelsCreatedHandler = ModelsCreated;
				if (modelsCreatedHandler != null)
				{
					modelsCreatedHandler(models, source);
				}

				SemanticVerifierVisitor semanticVisitor = new SemanticVerifierVisitor(models);
				semanticVisitor.VisitNodes(models);

				ModelsDelegate modelsValidatedHandler = ModelsValidated;
				if (modelsValidatedHandler != null)
				{
					modelsValidatedHandler(models, source);
				}

				AddXmlToNHibernateCfg(holder, models);

				AddXmlToNHibernateFromAssmebliesAttributes(holder, models);

				SessionFactoryHolderDelegate registeredInConfigurationHandler = MappingRegisteredInConfiguration;
				if(registeredInConfigurationHandler!=null)
				{
					registeredInConfigurationHandler(holder);
				}

				if (source.VerifyModelsAgainstDBSchema)
				{
					VerifySchema(models);
				}
			}
		}
Esempio n. 55
0
 public static void RegisterSessionFactoryHolder(IWindsorContainer container, ISessionFactoryHolder holder)
 {
     container.Register(Component.For<ISessionFactoryHolder>()
         .Named("activerecord.sessionfactoryholder").Instance(holder));
 }
Esempio n. 56
0
 public HiLoGeneratorNHibernate()
 {
     this.getSessionFactoryHolder = ActiveRecordMediator.GetSessionFactoryHolder();
     generator = new TableHiLoGenerator();
     var configuration = getSessionFactoryHolder.GetConfiguration(typeof(BaseSmiEntity));
     generator.Configure(NHibernateUtil.Int64, new Dictionary<string, string> { { "table", "hibernate_unique_key" } }, Dialect.GetDialect());
 }
			public SessionFactoryDelegateProxy(ISessionFactoryHolder sessionFactoryHolder, Type arType)
			{
				this.sessionFactoryHolder = sessionFactoryHolder;
				this.arType = arType;
			}
Esempio n. 58
0
 private void SaveHolder(ISessionFactoryHolder holder)
 {
     sessionFactoryHolder = holder;
 }
 public CustomMemberBindingProvider(
     IRepository<MemberBindingRecord> repository,
     ISessionFactoryHolder sessionFactoryHolder) {
     _repository = repository;
     _sessionFactoryHolder = sessionFactoryHolder;
 }
		/// <summary>
		/// Creates the specified session factory delegate from the holder and root type
		/// </summary>
		/// <param name="sessionFactoryHolder">The session factory holder.</param>
		/// <param name="arType">Type of the AR entity.</param>
		public static ISessionFactory Create(ISessionFactoryHolder sessionFactoryHolder, Type arType)
		{
			object proxy = generator.CreateInterfaceProxyWithoutTarget(typeof(ISessionFactory), new SessionFactoryDelegateProxy(sessionFactoryHolder, arType));
			return (ISessionFactory)proxy;
		}