static NHibernateConfigurator() { var sqlitePersistenceConfigurerProvider = new SqlitePersistenceConfigurerProvider (); #if DEBUG FluentConfigurationSerializer.IsEnabled = false; #endif var configurationProvider = new FluentConfigurationProvider ( sqlitePersistenceConfigurerProvider , new AssemblyLocator()); _configuration = configurationProvider.Configure ().GetEnumerator ().Current; _configuration = _configuration.DataBaseIntegration ( db => db.ConnectionProvider<TestConnectionProvider> () ); _configuration.SetProperty ( Environment.CurrentSessionContextClass, "thread_static" ); var props = _configuration.Properties; if ( props.ContainsKey ( Environment.ConnectionStringName ) ) props.Remove ( Environment.ConnectionStringName ); // This line is only for TFS integration build MSTest runner ForceLoadingAssembliesForMsTestRunner(); _sessionFactory = _configuration.BuildSessionFactory (); }
private static void Main() { var appConfig = new AppSettingsConfiguration (); var connectionStringBuilder = new SqlConnectionStringBuilder (); connectionStringBuilder.DataSource = appConfig.GetProperty ( "DatabaseServerName" ); connectionStringBuilder.IntegratedSecurity = true; var dbCreated = false; var databaseName = appConfig.GetProperty ( "DatabaseCatalogName" ); var sqlDataPath = String.Empty; // appConfig.GetProperty("SqlDataPath"); using ( var sqlConnnection = new SqlConnection ( connectionStringBuilder.ConnectionString ) ) { sqlConnnection.Open (); sqlDataPath = GetDbFilePath ( sqlConnnection, "master" ); if ( !CheckDbExists ( sqlConnnection, databaseName ) ) { CreateDatabase ( sqlConnnection, databaseName, sqlDataPath ); dbCreated = true; } } var appSettingsConfiguration = new AppSettingsConfiguration (); Console.WriteLine ( "Creating schema script...." ); var msSql2008PersistenceConfigurerProvider = new MsSql2008PersistenceConfigurerProvider ( appSettingsConfiguration ); #if DEBUG FluentConfigurationSerializer.IsEnabled = false; #endif IConfigurationProvider fluentConfigurationProvider = new FluentConfigurationProvider ( msSql2008PersistenceConfigurerProvider, new AssemblyLocator() ); var configuration = fluentConfigurationProvider.Configure ().GetEnumerator ().Current; ISessionFactoryProvider sessionFactoryProvider = new SessionFactoryProvider ( fluentConfigurationProvider ); var sessionFactory = sessionFactoryProvider.GetFactory ( null ); var exportFileName = appConfig.GetProperty ( ExportOutputFilePropertyName ); var sb = new StringBuilder (); var headerComment = string.Format ( "{0}{0}{1}{0}{2}{0}{3}{0}", Environment.NewLine, "/***********************************************************", "Begin: SQL Scripts to create RemGenDatabase database objects", "***********************************************************/" ); sb.Append ( headerComment ); var sql = GenerateSchemaCreationSql (); using ( var session = sessionFactory.OpenSession () ) { TextWriter textWriter = new StringWriter (); new SchemaExport ( configuration ).Execute ( true, false, false, session.Connection, textWriter ); sql += textWriter.ToString (); } sb.Append ( sql ); sb.Append ( Environment.NewLine ); sb.Append ( "/***********************************************************" ); sb.Append ( Environment.NewLine ); sb.Append ( "End: SQL Scripts to create RemGenDatabase database objects" ); sb.Append ( Environment.NewLine ); sb.Append ( "***********************************************************/" ); sb.Append ( Environment.NewLine ); sb.Append ( Environment.NewLine ); Debug.Write ( sb.ToString () ); Console.WriteLine ( sb.ToString () ); using ( var fs = new FileStream ( exportFileName, FileMode.OpenOrCreate, FileAccess.Write ) ) { using ( var streamWriter = new StreamWriter ( fs ) ) { streamWriter.Write ( sb.ToString () ); } } Console.WriteLine ( "Deploy to Database (Y/N)?" ); var answer = Console.ReadLine (); if ( string.Compare ( answer, "yes", true ) == 0 || string.Compare ( answer, "y", true ) == 0 ) { if ( !dbCreated ) { Console.WriteLine ( "Dropping Database..." ); using ( var sqlConnection = new SqlConnection ( connectionStringBuilder.ConnectionString ) ) { sqlConnection.Open (); using ( var sqlDropDatabaseCommand = new SqlCommand ( string.Format ( "USE {0} ALTER DATABASE {0} SET SINGLE_USER WITH ROLLBACK IMMEDIATE USE master DROP DATABASE {0}", databaseName ), sqlConnection ) ) { sqlDropDatabaseCommand.ExecuteNonQuery (); } } } using ( var sqlConnection = new SqlConnection ( connectionStringBuilder.ConnectionString ) ) { sqlConnection.Open (); if ( !dbCreated ) { CreateDatabase ( sqlConnection, databaseName, sqlDataPath ); } } //connectionStringBuilder.InitialCatalog = databaseName; using ( var sqlConnection = new SqlConnection ( connectionStringBuilder.ConnectionString ) ) { sqlConnection.Open (); sqlConnection.ChangeDatabase ( databaseName ); Console.WriteLine ( "Running schema script..." ); var fullScript = sb.ToString (); var goSplit = fullScript.Split ( new[] { string.Format ( "go {0}", Environment.NewLine ) }, StringSplitOptions.RemoveEmptyEntries ); foreach ( var sqlstring in goSplit ) { var sqlToRun = sqlstring; if ( sqlstring == goSplit[0] ) { sqlToRun = sqlstring.Replace ( headerComment, "" ); } using ( var createSchemaCommand = new SqlCommand ( sqlToRun, sqlConnection ) ) { createSchemaCommand.ExecuteNonQuery (); } } } } }