public static void RunWithSqlServer(IEnumerable<RecordBlueprint> recordDescriptors, Action<ISessionFactory> action) { var temporaryPath = Path.GetTempFileName(); if (File.Exists(temporaryPath)) File.Delete(temporaryPath); Directory.CreateDirectory(temporaryPath); var databasePath = Path.Combine(temporaryPath, "Coevery.mdf"); var databaseName = Path.GetFileNameWithoutExtension(databasePath); try { // create database if (!TryCreateSqlServerDatabase(databasePath, databaseName)) return; var meta = new Meta<CreateDataServicesProvider>((dataFolder, connectionString) => new SqlServerDataServicesProvider(dataFolder, connectionString), new Dictionary<string, object> { { "ProviderName", "SqlServer" } }); var manager = (IDataServicesProviderFactory)new DataServicesProviderFactory(new[] { meta }); var parameters = new SessionFactoryParameters { Provider = "SqlServer", DataFolder = temporaryPath, ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFileName=" + databasePath + ";Integrated Security=True;User Instance=True;", RecordDescriptors = recordDescriptors, }; var configuration = manager .CreateProvider(parameters) .BuildConfiguration(parameters); new SchemaExport(configuration).Execute(false, true, false); using (var sessionFactory = configuration.BuildSessionFactory()) { action(sessionFactory); } } finally { try { Directory.Delete(temporaryPath, true); } catch (IOException) { } } }
public Configuration BuildConfiguration(SessionFactoryParameters parameters) { var database = GetPersistenceConfigurer(parameters.CreateDatabase); var persistenceModel = CreatePersistenceModel(parameters.RecordDescriptors.ToList()); var config = Fluently.Configure(); parameters.Configurers.Invoke(c => c.Created(config, persistenceModel), Logger); config = config.Database(database) .Mappings(m => m.AutoMappings.Add(persistenceModel)) .ExposeConfiguration(cfg => { cfg.EventListeners.LoadEventListeners = new ILoadEventListener[] {new CoeveryLoadEventListener()}; parameters.Configurers.Invoke(c => c.Building(cfg), Logger); }); parameters.Configurers.Invoke(c => c.Prepared(config), Logger); return config.BuildConfiguration(); }
public Configuration BuildConfiguration(SessionFactoryParameters parameters) { var database = GetPersistenceConfigurer(parameters.CreateDatabase); var persistenceModel = CreatePersistenceModel(parameters.RecordDescriptors.ToList()); var config = Fluently.Configure(); parameters.Configurers.Invoke(c => c.Created(config, persistenceModel), Logger); config = config.Database(database) .Mappings(m => m.AutoMappings.Add(persistenceModel)) .ExposeConfiguration(cfg => { cfg.EventListeners.LoadEventListeners = new ILoadEventListener[] { new CoeveryLoadEventListener() }; parameters.Configurers.Invoke(c => c.Building(cfg), Logger); }); parameters.Configurers.Invoke(c => c.Prepared(config), Logger); return(config.BuildConfiguration()); }
public static void RunWithSqlCe(IEnumerable<RecordBlueprint> recordDescriptors, Action<ISessionFactory> action) { var temporaryPath = Path.GetTempFileName(); if (File.Exists(temporaryPath)) File.Delete(temporaryPath); Directory.CreateDirectory(temporaryPath); var databasePath = Path.Combine(temporaryPath, "Coevery.mdf"); var databaseName = Path.GetFileNameWithoutExtension(databasePath); var parameters = new SessionFactoryParameters { Provider = "SqlCe", DataFolder = temporaryPath, RecordDescriptors = recordDescriptors }; try { var manager = (IDataServicesProviderFactory)new DataServicesProviderFactory(new[] { new Meta<CreateDataServicesProvider>( (dataFolder, connectionString) => new SqlCeDataServicesProvider(dataFolder, connectionString), new Dictionary<string, object> {{"ProviderName", "SqlCe"}}) }); var configuration = manager .CreateProvider(parameters) .BuildConfiguration(parameters); configuration.SetProperty("connection.release_mode", "on_close"); new SchemaExport(configuration).Execute(false, true, false); using (var sessionFactory = configuration.BuildSessionFactory()) { action(sessionFactory); } } finally { try { Directory.Delete(temporaryPath, true); } catch (IOException) { } } }