/// <summary>Sets properties configuration dictionary based on configuration in the database section.</summary> /// <param name="config">The database section configuration.</param> /// <param name="connectionStrings">Connection strings from configuration</param> protected void SetupProperties(DatabaseSection config, ConnectionStringsSection connectionStrings) { NHibernate.Cfg.Environment.UseReflectionOptimizer = Utility.GetTrustLevel() > System.Web.AspNetHostingPermissionLevel.Medium; Properties[NHibernate.Cfg.Environment.ProxyFactoryFactoryClass] = "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"; // connection Properties[NHibernate.Cfg.Environment.ConnectionStringName] = config.ConnectionStringName; Properties[NHibernate.Cfg.Environment.ConnectionProvider] = "NHibernate.Connection.DriverConnectionProvider"; Properties[NHibernate.Cfg.Environment.Hbm2ddlKeyWords] = "none"; SetupFlavourProperties(config, connectionStrings); SetupCacheProperties(config); // custom config properties foreach (string key in config.HibernateProperties.AllKeys) { Properties[key] = config.HibernateProperties[key].Value; } }
public XmlRepository(DatabaseSection config, ConnectionStringsSection connectionStrings) { _tEntityType = typeof(TEntity); _tEntityIdProperty = _tEntityType.GetProperty("ID"); _tEntityNameProperty = _tEntityType.GetProperty("Name"); if (config != null && !string.IsNullOrEmpty(config.ConnectionStringName)) { ConnectionStringSettings css = connectionStrings.ConnectionStrings[config.ConnectionStringName]; if (css == null) { throw new ConfigurationErrorsException("Could not find the connection string named '" + config.ConnectionStringName + "' that was defined in the n2/database configuration section."); } databaseDir = css.ConnectionString; } if (string.IsNullOrEmpty(databaseDir)) { databaseDir = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/ContentItemsXml"); } if (string.IsNullOrEmpty(databaseDir)) { databaseDir = Path.Combine(Path.GetTempPath(), "xmlrepotest" + GetHashCode()); // ensure different paths for replication tests } if (!Directory.Exists(DataDirectoryPhysical)) { Directory.CreateDirectory(DataDirectoryPhysical); } else if (config == null && connectionStrings == null) { InternalDeleteFiles("*"); // assume unit test and delete all files } _logger.Debug("NEW XmlRepository " + typeof(TEntity).FullName + " in " + databaseDir); }
public ReplicationManager( IPersister persister, IItemFinder finder, IReplicationStorage repstore, IFileSystemFactory fileSystemFactory, DatabaseSection dataBaseSection, ISecurityManager security, IIndexer indexer, // optional IFlushable flushable // optional ) { _repstore = repstore; _security = security; _persister = persister; _finder = finder; _indexer = indexer; _flushable = flushable; // detect sync direction from Database Type and double check via config string value = ConfigurationManager.AppSettings["XmlReplication"] ?? "false"; IsSlave = value.Equals("Slave", StringComparison.InvariantCultureIgnoreCase) & (dataBaseSection.Flavour == DatabaseFlavour.Xml); IsMaster = value.Equals("Master", StringComparison.InvariantCultureIgnoreCase) & !IsSlave; if (IsMaster || IsSlave) { // only initialize if replication is active var storageConfig = (FileSystemNamespace)Enum.Parse(typeof(FileSystemNamespace), ConfigurationManager.AppSettings["AzureReplicationStorageContainerName"] ?? "ReplicationStorageDebug"); _fileSystem = fileSystemFactory.Create(storageConfig); // constructing these dependencies to ensure same filesystem and simplify construction _replicationWriteLockManager = new ReplicationWriteLockManager(_fileSystem); _replicationReadLockManager = new ReplicationReadLockManager(_fileSystem); } _replicationLogPath = "/_Xml_Sync_Log"; }
/// <summary>Creates a new instance of the <see cref="ConfigurationBuilder"/>.</summary> public ConfigurationBuilder(IDefinitionProvider[] definitionProviders, ClassMappingGenerator generator, IWebContext webContext, ConfigurationBuilderParticipator[] participators, DatabaseSection config, ConnectionStringsSection connectionStrings) { this.definitionProviders = definitionProviders; this.generator = generator; this.webContext = webContext; this.participators = participators; if (config == null) { config = new DatabaseSection(); } TryLocatingHbmResources = config.TryLocatingHbmResources; tablePrefix = config.TablePrefix; batchSize = config.BatchSize; childrenLaziness = config.Children.Laziness; childrenCascade = config.Children.Cascade; childrenBatch = config.Children.Batch; cacheRegion = config.CacheRegion; SetupProperties(config, connectionStrings); SetupMappings(config); }
/// <summary>Sets properties configuration dictionary based on configuration in the database section.</summary> /// <param name="config">The database section configuration.</param> /// <param name="connectionStrings">Connection strings from configuration</param> protected void SetupProperties(DatabaseSection config, ConnectionStringsSection connectionStrings) { NHibernate.Cfg.Environment.UseReflectionOptimizer = Utility.GetTrustLevel() > System.Web.AspNetHostingPermissionLevel.Medium; // connection Properties[NHibernate.Cfg.Environment.ConnectionStringName] = config.ConnectionStringName; Properties[NHibernate.Cfg.Environment.ConnectionProvider] = "NHibernate.Connection.DriverConnectionProvider"; Properties[NHibernate.Cfg.Environment.Hbm2ddlKeyWords] = "none"; SetupFlavourProperties(config, connectionStrings); bool useNonBatcher = // configured batch size <= 1 (batchSize.HasValue && batchSize.Value <= 1) // medium trust in combination with sql client driver // causes fault: Attempt by method 'NHibernate.AdoNet.SqlClientSqlCommandSet..ctor()' to access method 'System.Data.SqlClient.SqlCommandSet..ctor()' failed. at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) || (Utility.GetTrustLevel() <= System.Web.AspNetHostingPermissionLevel.Medium && typeof(SqlClientDriver).IsAssignableFrom(Type.GetType(Properties[Environment.ConnectionDriver]))); if (useNonBatcher) { Properties[NHibernate.Cfg.Environment.BatchStrategy] = typeof(NonBatchingBatcherFactory).AssemblyQualifiedName; } SetupCacheProperties(config); if (config.Isolation.HasValue) { Properties[NHibernate.Cfg.Environment.Isolation] = config.Isolation.ToString(); } foreach (string key in config.HibernateProperties.AllKeys) { Properties[key] = config.HibernateProperties[key].Value; } }
public NHInstallationManager(IHost host, DefinitionMap map, ContentActivator activator, Importer importer, IPersister persister, ISessionProvider sessionProvider, IConfigurationBuilder configurationBuilder, IWebContext webContext, ConnectionMonitor connectionContext, DatabaseSection config) : base(connectionContext, importer, webContext, persister, activator) { this.host = host; this.map = map; this.activator = activator; this.importer = importer; this.persister = persister; this.sessionProvider = sessionProvider; this.configurationBuilder = configurationBuilder; this.webContext = webContext; this.connectionContext = connectionContext; this.config = config; this.isDatabaseFileSystemEnbled = config.Files.StorageLocation == FileStoreLocation.Database; }
public ContentChangeTracker(IAsyncIndexer indexer, IPersister persister, ConnectionMonitor connection, DatabaseSection config) { this.indexer = indexer; if (config.Search.Enabled) { connection.Online += delegate { persister.ItemSaved += persister_ItemSaved; persister.ItemMoving += persister_ItemMoving; persister.ItemMoved += persister_ItemMoved; persister.ItemCopied += persister_ItemCopied; persister.ItemDeleted += persister_ItemDeleted; }; connection.Offline += delegate { persister.ItemSaved -= persister_ItemSaved; persister.ItemMoving -= persister_ItemMoving; persister.ItemMoved -= persister_ItemMoved; persister.ItemCopied -= persister_ItemCopied; persister.ItemDeleted -= persister_ItemDeleted; }; } }
public FileConfigurationParticipator(DatabaseSection config) { tablePrefix = config.TablePrefix; chunkSize = config.Files.ChunkSize; }
public RavenStoreFactory(DatabaseSection config) { connectionStringName = config.ConnectionStringName; RunInMemory = config.Raven.RunInMemory; EmbeddedDocumentStore = config.Raven.EmbeddedDocumentStore; }
public SessionProvider(IConfigurationBuilder builder, NHInterceptorFactory interceptorFactory, IWebContext webContext, DatabaseSection config) { nhSessionFactory = builder.BuildSessionFactory(); logger.Debug("Built Session Factory " + DateTime.Now); this.webContext = webContext; this.interceptorFactory = interceptorFactory; this.isolation = config.Isolation; }
/// <summary> /// Configures the properties of each supported database flavor. You need to extend this method if you want to /// add your own database flavor. /// </summary> /// <param name="config"></param> /// <param name="connectionStrings"></param> /// <returns></returns> private DatabaseFlavour SetupFlavourProperties(DatabaseSection config, ConnectionStringsSection connectionStrings) { DatabaseFlavour flavour = config.Flavour; if (flavour == DatabaseFlavour.AutoDetect) { ConnectionStringSettings css = connectionStrings.ConnectionStrings[config.ConnectionStringName]; if (css == null) { throw new ConfigurationErrorsException("Could not find the connection string named '" + config.ConnectionStringName + "' that was defined in the n2/database configuration section. If you installed using NuGet try installing 'N2 CMS SQLite config' or configuring this connection string manually."); } flavour = DetectFlavor(css); } // HACK: used to support seamless text/nvarchar(max) support across databases if (flavour == DatabaseFlavour.MySql) { stringLength = 16777215; } switch (flavour) { case DatabaseFlavour.SqlServer2000: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.SqlClientDriver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.MsSql2000Dialect).AssemblyQualifiedName; break; case DatabaseFlavour.SqlServer2005: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.SqlClientDriver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.MsSql2005Dialect).AssemblyQualifiedName; break; case DatabaseFlavour.SqlServer: case DatabaseFlavour.SqlServer2008: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.SqlClientDriver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.MsSql2008Dialect).AssemblyQualifiedName; break; case DatabaseFlavour.SqlCe3: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.SqlServerCeDriver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.MsSqlCeDialect).AssemblyQualifiedName; break; case DatabaseFlavour.SqlCe: case DatabaseFlavour.SqlCe4: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.SqlServerCeDriver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.MsSqlCe40Dialect).AssemblyQualifiedName; break; case DatabaseFlavour.MySql: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.MySqlDataDriver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.MySQL5Dialect).AssemblyQualifiedName; break; case DatabaseFlavour.SqLite: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.SQLite20Driver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.SQLiteDialect).AssemblyQualifiedName; break; case DatabaseFlavour.Firebird: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.FirebirdDriver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.FirebirdDialect).AssemblyQualifiedName; break; case DatabaseFlavour.Generic: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.OleDbDriver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.GenericDialect).AssemblyQualifiedName; break; case DatabaseFlavour.Jet: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = "NHibernate.JetDriver.JetDriver, NHibernate.JetDriver"; Properties[NHibernate.Cfg.Environment.Dialect] = "NHibernate.JetDriver.JetDialect, NHibernate.JetDriver"; break; case DatabaseFlavour.DB2: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.OdbcDriver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.DB2Dialect).AssemblyQualifiedName; break; case DatabaseFlavour.Oracle9i: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.OracleClientDriver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.Oracle9iDialect).AssemblyQualifiedName; break; case DatabaseFlavour.Oracle: case DatabaseFlavour.Oracle10g: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.OracleClientDriver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.Oracle10gDialect).AssemblyQualifiedName; break; case DatabaseFlavour.OracleOdp: Properties[NHibernate.Cfg.Environment.ConnectionDriver] = typeof(NHibernate.Driver.OracleDataClientDriver).AssemblyQualifiedName; Properties[NHibernate.Cfg.Environment.Dialect] = typeof(NHibernate.Dialect.Oracle10gDialect).AssemblyQualifiedName; break; case DatabaseFlavour.MongoDB: return(DatabaseFlavour.MongoDB); case DatabaseFlavour.Xml: return(DatabaseFlavour.Xml); default: throw new ConfigurationErrorsException("Couldn't determine database flavour. Please check the 'flavour' attribute of the n2/database configuration section."); } return(flavour); }
public SessionProvider(IConfigurationBuilder builder, NHInterceptorFactory interceptorFactory, IWebContext webContext, DatabaseSection config) { if (config.Flavour.IsFlagSet(DatabaseFlavour.NoSql)) { return; } nhSessionFactory = builder.BuildSessionFactory(); this.webContext = webContext; this.interceptorFactory = interceptorFactory; this.isolation = config.Isolation; this.autoStartTransaction = config.AutoStartTransaction; this.CacheEnabled = config.Caching; }
public StatisticsTablesParticipator(DatabaseSection config) { tablePrefix = config.TablePrefix; }
/// <summary>Creates a new instance of the <see cref="ConfigurationBuilder"/>.</summary> public ConfigurationBuilder(IDefinitionProvider[] definitionProviders, ClassMappingGenerator generator, IWebContext webContext, ConfigurationBuilderParticipator[] participators, DatabaseSection config, ConnectionStringsSection connectionStrings) { this.definitionProviders = definitionProviders; this.generator = generator; this.webContext = webContext; this.participators = participators; if (config == null) { config = new DatabaseSection(); } if (!string.IsNullOrEmpty(config.HibernateMapping)) { DefaultMapping = config.HibernateMapping; } SetupProperties(config, connectionStrings); SetupMappings(config); TryLocatingHbmResources = config.TryLocatingHbmResources; tablePrefix = config.TablePrefix; batchSize = config.BatchSize; childrenLaziness = config.ChildrenLaziness; }
public RavenInstallationManager(IHost host, DefinitionMap map, ContentActivator activator, Importer importer, IPersister persister, ISessionProvider sessionProvider, IConfigurationBuilder configurationBuilder, IWebContext webContext, ConnectionMonitor connectionContext, DatabaseSection config, RavenConnectionProvider cp) : base(connectionContext, importer, webContext, persister, activator) { this.cp = cp; }
public ContentChangeTracker(IAsyncIndexer indexer, IPersister persister, ConnectionMonitor connection, DatabaseSection config) { this.indexer = indexer; if (!config.Search.Enabled) { return; } if (!string.IsNullOrEmpty(config.Search.IndexOnMachineNamed) && config.Search.IndexOnMachineNamed != Environment.MachineName) { return; } connection.Online += delegate { IsMonitoring = true; persister.ItemSaved += persister_ItemSaved; persister.ItemMoving += persister_ItemMoving; persister.ItemMoved += persister_ItemMoved; persister.ItemCopied += persister_ItemCopied; persister.ItemDeleted += persister_ItemDeleted; }; connection.Offline += delegate { IsMonitoring = false; persister.ItemSaved -= persister_ItemSaved; persister.ItemMoving -= persister_ItemMoving; persister.ItemMoved -= persister_ItemMoved; persister.ItemCopied -= persister_ItemCopied; persister.ItemDeleted -= persister_ItemDeleted; }; }
public DatabaseFileSystem(ISessionProvider sessionProvider, DatabaseSection config) { this._sessionProvider = sessionProvider; this.chunkSize = config.Files.ChunkSize; }
public LuceneAccesor(IWebContext webContext, DatabaseSection config) { LockTimeout = 2000L; indexPath = Path.Combine(webContext.MapPath(config.Search.IndexPath), "Pages"); }
private void SetupCacheProperties(DatabaseSection config) { Properties[NHibernate.Cfg.Environment.UseSecondLevelCache] = config.Caching.ToString(); Properties[NHibernate.Cfg.Environment.UseQueryCache] = config.Caching.ToString(); Properties[NHibernate.Cfg.Environment.CacheProvider] = config.CacheProviderClass; }
public AsyncIndexer(IContentIndexer indexer, IPersister persister, IWorker worker, IErrorNotifier errors, DatabaseSection config) { RetryInterval = TimeSpan.FromMinutes(2); this.async = config.Search.AsyncIndexing; this.handleErrors = config.Search.HandleErrors; this.indexer = indexer; this.persister = persister; this.worker = worker; this.errors = errors; }
public static void Setup(out IDefinitionManager definitions, out ContentActivator activator, out IItemNotifier notifier, out FakeSessionProvider sessionProvider, out ItemFinder finder, out SchemaExport schemaCreator, out InterceptingProxyFactory proxyFactory, IWebContext context, DatabaseSection config, ConfigurationBuilderParticipator[] participators, params Type[] itemTypes) { Setup(out definitions, out activator, out notifier, out proxyFactory, itemTypes); var connectionStrings = (ConnectionStringsSection)ConfigurationManager.GetSection("connectionStrings"); var configurationBuilder = new ConfigurationBuilder(definitions, new ClassMappingGenerator(), new ThreadContext(), participators, config, connectionStrings); var configurationSource = new ConfigurationSource(configurationBuilder); sessionProvider = new FakeSessionProvider(configurationSource, new NHInterceptor(proxyFactory, configurationSource, notifier), context); finder = new ItemFinder(sessionProvider, definitions); schemaCreator = new SchemaExport(configurationSource.BuildConfiguration()); }
public CacheWrapper(IPersister persister, IWebContext context, DatabaseSection config) { this.persister = persister; this.tablePrefix = config.TablePrefix; this.sqlCacheDependency = config.SqlCacheDependency; }