diff --git a/src/Umbraco.Compat7/Core/ApplicationContext.cs b/src/Umbraco.Compat7/Core/ApplicationContext.cs index 6c0ab28b71..40c295c190 100644 --- a/src/Umbraco.Compat7/Core/ApplicationContext.cs +++ b/src/Umbraco.Compat7/Core/ApplicationContext.cs @@ -9,7 +9,9 @@ namespace Umbraco.Core public class ApplicationContext : IDisposable { private ApplicationContext() - { } + { + DatabaseContext = new DatabaseContext(DI.Current.DatabaseFactory); + } public static ApplicationContext Current { get; } = new ApplicationContext(); @@ -23,7 +25,7 @@ namespace Umbraco.Core public bool IsUpgrading => DI.Current.RuntimeState.Level == RuntimeLevel.Upgrade; - public DatabaseContext DatabaseContext => DI.Current.DatabaseContext; + public DatabaseContext DatabaseContext { get; } public ServiceContext Services => DI.Current.Services; diff --git a/src/Umbraco.Core/DatabaseContext.cs b/src/Umbraco.Compat7/Core/DatabaseContext.cs similarity index 74% rename from src/Umbraco.Core/DatabaseContext.cs rename to src/Umbraco.Compat7/Core/DatabaseContext.cs index 6ba8762e53..9048006675 100644 --- a/src/Umbraco.Core/DatabaseContext.cs +++ b/src/Umbraco.Compat7/Core/DatabaseContext.cs @@ -1,96 +1,76 @@ -using System; -using NPoco; -using Umbraco.Core.Persistence; -using Umbraco.Core.Persistence.Querying; -using Umbraco.Core.Persistence.SqlSyntax; - -namespace Umbraco.Core -{ - /// - /// Represents the Umbraco database context. - /// - /// - /// The database context creates Sql statements and IQuery expressions. - /// The database context provides the SqlSyntax and the DatabaseType. - /// The database context provides access to the "ambient" database. - /// The database context provides basic status infos (whether the db is configured and can connect). - /// - public class DatabaseContext - { - private readonly IUmbracoDatabaseFactory _databaseFactory; - - /// - /// Initializes a new instance of the class. - /// - /// A database factory. - /// The database factory will try to configure itself but may fail eg if the default - /// Umbraco connection string is not available because we are installing. In which case this - /// database builder must sort things out and configure the database factory before it can be - /// used. - public DatabaseContext(IUmbracoDatabaseFactory databaseFactory) - { - if (databaseFactory == null) throw new ArgumentNullException(nameof(databaseFactory)); - - _databaseFactory = databaseFactory; - } - - /// - /// Gets the database Sql syntax. - /// - public ISqlSyntaxProvider SqlSyntax => _databaseFactory.SqlSyntax; - - /// - /// Creates a Sql statement. - /// - public Sql Sql() => _databaseFactory.Sql(); - - /// - /// Creates a Sql statement. - /// - public Sql Sql(string sql, params object[] args) => _databaseFactory.Sql(sql, args); - - /// - /// Creates a Query expression. - /// - public IQuery Query() => _databaseFactory.Query(); - - /// - /// Gets an ambient database for doing CRUD operations against custom tables that resides in the Umbraco database. - /// - /// Should not be used for operation against standard Umbraco tables; as services should be used instead. - public IUmbracoDatabase Database => _databaseFactory.GetDatabase(); - - /// - /// Gets an ambient database scope. - /// - /// A disposable object representing the scope. - public IDisposable CreateDatabaseScope() // fixme - move over to factory - { - return _databaseFactory.CreateScope(); - } - -#if DEBUG_DATABASES - public List Databases - { - get - { - var factory = _databaseFactory as UmbracoDatabaseFactory; - if (factory == null) throw new NotSupportedException(); - return factory.Databases; - } - } -#endif - - /// - /// Gets a value indicating whether the database is configured. - /// - /// It does not necessarily mean that it is possible to - /// connect, nor that Umbraco is installed, nor up-to-date. - public bool IsDatabaseConfigured => _databaseFactory.Configured; - - /// - /// Gets a value indicating whether it is possible to connect to the database. - /// - public bool CanConnect => _databaseFactory.Configured && _databaseFactory.CanConnect; - } -} \ No newline at end of file +using System; +using NPoco; +using Umbraco.Core.Persistence; +using Umbraco.Core.Persistence.Querying; +using Umbraco.Core.Persistence.SqlSyntax; + +// ReSharper disable once CheckNamespace +namespace Umbraco.Core +{ + public class DatabaseContext + { + private readonly IUmbracoDatabaseFactory _databaseFactory; + + /// + /// Initializes a new instance of the class. + /// + /// A database factory. + /// The database factory will try to configure itself but may fail eg if the default + /// Umbraco connection string is not available because we are installing. In which case this + /// database builder must sort things out and configure the database factory before it can be + /// used. + public DatabaseContext(IUmbracoDatabaseFactory databaseFactory) + { + if (databaseFactory == null) throw new ArgumentNullException(nameof(databaseFactory)); + + _databaseFactory = databaseFactory; + } + + /// + /// Gets the database Sql syntax. + /// + public ISqlSyntaxProvider SqlSyntax => _databaseFactory.SqlSyntax; + + /// + /// Creates a Sql statement. + /// + public Sql Sql() => _databaseFactory.Sql(); + + /// + /// Creates a Sql statement. + /// + public Sql Sql(string sql, params object[] args) => _databaseFactory.Sql(sql, args); + + /// + /// Creates a Query expression. + /// + public IQuery Query() => _databaseFactory.Query(); + + /// + /// Gets an ambient database for doing CRUD operations against custom tables that resides in the Umbraco database. + /// + /// Should not be used for operation against standard Umbraco tables; as services should be used instead. + public IUmbracoDatabase Database => _databaseFactory.GetDatabase(); + + /// + /// Gets an ambient database scope. + /// + /// A disposable object representing the scope. + public IDisposable CreateDatabaseScope() // fixme - move over to factory + { + return _databaseFactory.CreateScope(); + } + + /// + /// Gets a value indicating whether the database is configured. + /// + /// It does not necessarily mean that it is possible to + /// connect, nor that Umbraco is installed, nor up-to-date. + public bool IsDatabaseConfigured => _databaseFactory.Configured; + + /// + /// Gets a value indicating whether it is possible to connect to the database. + /// + public bool CanConnect => _databaseFactory.Configured && _databaseFactory.CanConnect; + } +} diff --git a/src/Umbraco.Compat7/Umbraco.Compat7.csproj b/src/Umbraco.Compat7/Umbraco.Compat7.csproj index 4743c61125..9b22523a69 100644 --- a/src/Umbraco.Compat7/Umbraco.Compat7.csproj +++ b/src/Umbraco.Compat7/Umbraco.Compat7.csproj @@ -52,6 +52,7 @@ + diff --git a/src/Umbraco.Core/Components/BootLoader.cs b/src/Umbraco.Core/Components/BootLoader.cs index fde5bf5599..bca9990ddb 100644 --- a/src/Umbraco.Core/Components/BootLoader.cs +++ b/src/Umbraco.Core/Components/BootLoader.cs @@ -6,6 +6,7 @@ using System.Text; using LightInject; using Umbraco.Core.Exceptions; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; namespace Umbraco.Core.Components { @@ -48,7 +49,7 @@ namespace Umbraco.Core.Components InstanciateComponents(orderedComponentTypes); ComposeComponents(level); - using (_container.GetInstance().CreateDatabaseScope()) + using (_container.GetInstance().CreateScope()) { InitializeComponents(); } diff --git a/src/Umbraco.Core/CoreRuntime.cs b/src/Umbraco.Core/CoreRuntime.cs index 3e4b5749a4..5655d7b0b8 100644 --- a/src/Umbraco.Core/CoreRuntime.cs +++ b/src/Umbraco.Core/CoreRuntime.cs @@ -227,9 +227,6 @@ namespace Umbraco.Core // until the database context configures it properly (eg when installing) container.RegisterSingleton(); - // register database context - container.RegisterSingleton(); - // register a database accessor - required by database factory // will be replaced by HybridUmbracoDatabaseAccessor in the web runtime // fixme - we should NOT be using thread static at all + will NOT get replaced = wtf? diff --git a/src/Umbraco.Core/CoreRuntimeComponent.cs b/src/Umbraco.Core/CoreRuntimeComponent.cs index df8d42527e..4c9c6b1001 100644 --- a/src/Umbraco.Core/CoreRuntimeComponent.cs +++ b/src/Umbraco.Core/CoreRuntimeComponent.cs @@ -14,6 +14,7 @@ using Umbraco.Core.Logging; using Umbraco.Core.Manifest; using Umbraco.Core.Models.Mapping; using Umbraco.Core.Models.PublishedContent; +using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Migrations; using Umbraco.Core.Plugins; using Umbraco.Core.PropertyEditors; @@ -93,7 +94,7 @@ namespace Umbraco.Core composition.Container.RegisterSingleton(factory => new DatabaseServerMessenger( factory.GetInstance(), - factory.GetInstance(), + factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), true, new DatabaseServerMessengerOptions())); diff --git a/src/Umbraco.Core/DI/Current.cs b/src/Umbraco.Core/DI/Current.cs index 36323afe61..bdfb34c48b 100644 --- a/src/Umbraco.Core/DI/Current.cs +++ b/src/Umbraco.Core/DI/Current.cs @@ -6,6 +6,7 @@ using Umbraco.Core.Dictionary; using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; +using Umbraco.Core.Persistence; using Umbraco.Core.Plugins; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; @@ -70,8 +71,8 @@ namespace Umbraco.Core.DI public static PluginManager PluginManager { - get { return _pluginManager - ?? (_pluginManager = Container.TryGetInstance() + get { return _pluginManager + ?? (_pluginManager = Container.TryGetInstance() ?? new PluginManager(ApplicationCache.RuntimeCache, ProfilingLogger)); } set { _pluginManager = value; } } @@ -146,8 +147,8 @@ namespace Umbraco.Core.DI public static ServiceContext Services => Container.GetInstance(); - public static DatabaseContext DatabaseContext - => Container.GetInstance(); + public static IUmbracoDatabaseFactory DatabaseFactory + => Container.GetInstance(); #endregion } diff --git a/src/Umbraco.Core/DI/RepositoryCompositionRoot.cs b/src/Umbraco.Core/DI/RepositoryCompositionRoot.cs index c7d05ae844..dd8715d06e 100644 --- a/src/Umbraco.Core/DI/RepositoryCompositionRoot.cs +++ b/src/Umbraco.Core/DI/RepositoryCompositionRoot.cs @@ -16,9 +16,6 @@ namespace Umbraco.Core.DI public void Compose(IServiceRegistry container) { - // register database context - container.RegisterSingleton(); - // register IUnitOfWork providers container.RegisterSingleton(); container.RegisterSingleton(); diff --git a/src/Umbraco.Core/DatabaseBuilder.cs b/src/Umbraco.Core/DatabaseBuilder.cs index 21b579e618..a43c50ec37 100644 --- a/src/Umbraco.Core/DatabaseBuilder.cs +++ b/src/Umbraco.Core/DatabaseBuilder.cs @@ -293,7 +293,7 @@ namespace Umbraco.Core } xml.Save(fileName, SaveOptions.DisableFormatting); - logger.Info("Configured a new ConnectionString using the '" + providerName + "' provider."); + logger.Info("Configured a new ConnectionString using the '" + providerName + "' provider."); } internal bool IsConnectionStringConfigured(ConnectionStringSettings databaseSettings) @@ -399,7 +399,7 @@ namespace Umbraco.Core return readyForInstall.Result; } - _logger.Info("Database configuration status: Started"); + _logger.Info("Database configuration status: Started"); var database = _databaseFactory.GetDatabase(); @@ -434,12 +434,12 @@ namespace Umbraco.Core message = message + "

Installation completed!

"; //now that everything is done, we need to determine the version of SQL server that is executing - _logger.Info("Database configuration status: " + message); + _logger.Info("Database configuration status: " + message); return new Result { Message = message, Success = true, Percentage = "100" }; } //we need to do an upgrade so return a new status message and it will need to be done during the next step - _logger.Info("Database requires upgrade"); + _logger.Info("Database requires upgrade"); message = "

Upgrading database, this may take some time...

"; return new Result { @@ -469,7 +469,7 @@ namespace Umbraco.Core return readyForInstall.Result; } - _logger.Info("Database upgrade started"); + _logger.Info("Database upgrade started"); var database = _databaseFactory.GetDatabase(); //var supportsCaseInsensitiveQueries = SqlSyntax.SupportsCaseInsensitiveQueries(database); @@ -525,7 +525,7 @@ namespace Umbraco.Core //now that everything is done, we need to determine the version of SQL server that is executing - _logger.Info("Database configuration status: " + message); + _logger.Info("Database configuration status: " + message); return new Result { Message = message, Success = true, Percentage = "100" }; } @@ -594,11 +594,11 @@ namespace Umbraco.Core private Result HandleInstallException(Exception ex) { - _logger.Error("Database configuration failed", ex); + _logger.Error("Database configuration failed", ex); if (_databaseSchemaValidationResult != null) { - _logger.Info("The database schema validation produced the following summary: \n" + _databaseSchemaValidationResult.GetSummary()); + _logger.Info("The database schema validation produced the following summary: \n" + _databaseSchemaValidationResult.GetSummary()); } return new Result diff --git a/src/Umbraco.Core/Services/PackagingService.cs b/src/Umbraco.Core/Services/PackagingService.cs index 0c6b2a7873..f102c41e9c 100644 --- a/src/Umbraco.Core/Services/PackagingService.cs +++ b/src/Umbraco.Core/Services/PackagingService.cs @@ -262,7 +262,7 @@ namespace Umbraco.Core.Services { //TODO: We need to refactor this so the packager isn't making direct db calls for an 'edge' case - var database = Current.DatabaseContext.Database; + var database = Current.DatabaseFactory.Database; var dtos = database.Fetch("WHERE datatypeNodeId = @Id", new { Id = propertyType.DataTypeDefinitionId }); var propertyValueList = new List(); diff --git a/src/Umbraco.Core/Sync/DatabaseServerMessenger.cs b/src/Umbraco.Core/Sync/DatabaseServerMessenger.cs index a4e637a687..d9cd3646c2 100644 --- a/src/Umbraco.Core/Sync/DatabaseServerMessenger.cs +++ b/src/Umbraco.Core/Sync/DatabaseServerMessenger.cs @@ -42,16 +42,16 @@ namespace Umbraco.Core.Sync protected DatabaseServerMessengerOptions Options { get; } public DatabaseServerMessenger( - IRuntimeState runtime, DatabaseContext dbContext, ILogger logger, ProfilingLogger proflog, + IRuntimeState runtime, IUmbracoDatabaseFactory databaseFactory, ILogger logger, ProfilingLogger proflog, bool distributedEnabled, DatabaseServerMessengerOptions options) : base(distributedEnabled) { - if (dbContext == null) throw new ArgumentNullException(nameof(dbContext)); + if (databaseFactory == null) throw new ArgumentNullException(nameof(databaseFactory)); if (logger == null) throw new ArgumentNullException(nameof(logger)); if (proflog == null) throw new ArgumentNullException(nameof(proflog)); if (options == null) throw new ArgumentNullException(nameof(options)); - DatabaseContext = dbContext; + DatabaseFactory = databaseFactory; Logger = logger; _runtime = runtime; _profilingLogger = proflog; @@ -62,11 +62,11 @@ namespace Umbraco.Core.Sync protected ILogger Logger { get; } - protected DatabaseContext DatabaseContext { get; } + protected IUmbracoDatabaseFactory DatabaseFactory { get; } - protected IUmbracoDatabase Database => DatabaseContext.Database; + protected IUmbracoDatabase Database => DatabaseFactory.Database; - protected Sql Sql() => DatabaseContext.Sql(); + protected Sql Sql() => DatabaseFactory.Sql(); #region Messenger diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 75dcd690fa..c3227439b0 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -226,7 +226,6 @@ - diff --git a/src/Umbraco.Tests/Components/ComponentTests.cs b/src/Umbraco.Tests/Components/ComponentTests.cs index 52af4a9deb..f9914a2048 100644 --- a/src/Umbraco.Tests/Components/ComponentTests.cs +++ b/src/Umbraco.Tests/Components/ComponentTests.cs @@ -32,7 +32,7 @@ namespace Umbraco.Tests.Components var mock = new Mock(); mock.Setup(x => x.GetInstance()).Returns(logger); mock.Setup(x => x.GetInstance()).Returns(new ProfilingLogger(Mock.Of(), Mock.Of())); - mock.Setup(x => x.GetInstance()).Returns(new DatabaseContext(f)); + mock.Setup(x => x.GetInstance()).Returns(f); setup?.Invoke(mock); return mock.Object; } diff --git a/src/Umbraco.Tests/Migrations/MigrationIssuesTests.cs b/src/Umbraco.Tests/Migrations/MigrationIssuesTests.cs index a83468643f..45f47dc8c3 100644 --- a/src/Umbraco.Tests/Migrations/MigrationIssuesTests.cs +++ b/src/Umbraco.Tests/Migrations/MigrationIssuesTests.cs @@ -35,14 +35,14 @@ namespace Umbraco.Tests.Migrations ParentId = -1, UniqueId = Guid.NewGuid() }; - DatabaseContext.Database.Insert(n); + DatabaseFactory.Database.Insert(n); var ct = new ContentTypeDto { Alias = "alias", NodeId = n.NodeId, Thumbnail = "thumb" }; - DatabaseContext.Database.Insert(ct); + DatabaseFactory.Database.Insert(ct); n = new NodeDto { Text = "text", @@ -51,21 +51,21 @@ namespace Umbraco.Tests.Migrations ParentId = -1, UniqueId = Guid.NewGuid() }; - DatabaseContext.Database.Insert(n); + DatabaseFactory.Database.Insert(n); var dt = new DataTypeDto { PropertyEditorAlias = Constants.PropertyEditors.RelatedLinksAlias, DbType = "x", DataTypeId = n.NodeId }; - DatabaseContext.Database.Insert(dt); + DatabaseFactory.Database.Insert(dt); var pt = new PropertyTypeDto { Alias = "alias", ContentTypeId = ct.NodeId, DataTypeId = dt.DataTypeId }; - DatabaseContext.Database.Insert(pt); + DatabaseFactory.Database.Insert(pt); n = new NodeDto { Text = "text", @@ -74,7 +74,7 @@ namespace Umbraco.Tests.Migrations ParentId = -1, UniqueId = Guid.NewGuid() }; - DatabaseContext.Database.Insert(n); + DatabaseFactory.Database.Insert(n); var data = new PropertyDataDto { NodeId = n.NodeId, @@ -82,7 +82,7 @@ namespace Umbraco.Tests.Migrations Text = "text", VersionId = Guid.NewGuid() }; - DatabaseContext.Database.Insert(data); + DatabaseFactory.Database.Insert(data); data = new PropertyDataDto { NodeId = n.NodeId, @@ -90,13 +90,13 @@ namespace Umbraco.Tests.Migrations Text = "", VersionId = Guid.NewGuid() }; - DatabaseContext.Database.Insert(data); - var migrationContext = new MigrationContext(DatabaseContext.Database, Logger); + DatabaseFactory.Database.Insert(data); + var migrationContext = new MigrationContext(DatabaseFactory.Database, Logger); var migration = new UpdateRelatedLinksData(migrationContext); - migration.UpdateRelatedLinksDataDo(DatabaseContext.Database); + migration.UpdateRelatedLinksDataDo(DatabaseFactory.Database); - data = DatabaseContext.Database.Fetch("SELECT * FROM cmsPropertyData WHERE id=" + data.Id).FirstOrDefault(); + data = DatabaseFactory.Database.Fetch("SELECT * FROM cmsPropertyData WHERE id=" + data.Id).FirstOrDefault(); Assert.IsNotNull(data); Debug.Print(data.Text); Assert.AreEqual("[{\"title\":\"\",\"caption\":\"\",\"link\":\"\",\"newWindow\":false,\"type\":\"external\",\"internal\":null,\"edit\":false,\"isInternal\":false}]", @@ -108,7 +108,7 @@ namespace Umbraco.Tests.Migrations { var logger = new DebugDiagnosticsLogger(); - var migrationContext = new MigrationContext(DatabaseContext.Database, Logger); + var migrationContext = new MigrationContext(DatabaseFactory.Database, Logger); //Setup the MigrationRunner var migrationRunner = new MigrationRunner( diff --git a/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs b/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs index 2278de5c93..9cde203236 100644 --- a/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs +++ b/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs @@ -23,7 +23,7 @@ namespace Umbraco.Tests.Persistence [TestFixture, RequiresSTA] public class DatabaseContextTests { - private DatabaseContext _dbContext; + private IUmbracoDatabaseFactory _databaseFactory; private ILogger _logger; private SqlCeSyntaxProvider _sqlCeSyntaxProvider; private ISqlSyntaxProvider[] _sqlSyntaxProviders; @@ -38,16 +38,15 @@ namespace Umbraco.Tests.Persistence _sqlCeSyntaxProvider = new SqlCeSyntaxProvider(); _sqlSyntaxProviders = new[] { (ISqlSyntaxProvider) _sqlCeSyntaxProvider }; _logger = Mock.Of(); - var dbFactory = new UmbracoDatabaseFactory(Core.Configuration.GlobalSettings.UmbracoConnectionName, _sqlSyntaxProviders, _logger, new TestDatabaseScopeAccessor(), Mock.Of()); + _databaseFactory = new UmbracoDatabaseFactory(Core.Configuration.GlobalSettings.UmbracoConnectionName, _sqlSyntaxProviders, _logger, new TestDatabaseScopeAccessor(), Mock.Of()); _runtime = Mock.Of(); _migrationEntryService = Mock.Of(); - _dbContext = new DatabaseContext(dbFactory); } [TearDown] public void TearDown() { - _dbContext = null; + _databaseFactory = null; } [Test] @@ -55,7 +54,7 @@ namespace Umbraco.Tests.Persistence { Assert.Throws(() => { - var db = _dbContext.Database; + var db = _databaseFactory.Database; }); } @@ -64,10 +63,10 @@ namespace Umbraco.Tests.Persistence { IUmbracoDatabase db1, db2; - using (_dbContext.CreateDatabaseScope()) + using (_databaseFactory.CreateScope()) { - db1 = _dbContext.Database; - db2 = _dbContext.Database; + db1 = _databaseFactory.Database; + db2 = _databaseFactory.Database; } Assert.AreSame(db1, db2); @@ -78,13 +77,13 @@ namespace Umbraco.Tests.Persistence { IUmbracoDatabase db1, db2; - using (_dbContext.CreateDatabaseScope()) + using (_databaseFactory.CreateScope()) { - db1 = _dbContext.Database; + db1 = _databaseFactory.Database; } - using (_dbContext.CreateDatabaseScope()) + using (_databaseFactory.CreateScope()) { - db2 = _dbContext.Database; + db2 = _databaseFactory.Database; } Assert.AreNotSame(db1, db2); @@ -93,9 +92,9 @@ namespace Umbraco.Tests.Persistence [Test] public void GetDatabaseType() { - using (_dbContext.CreateDatabaseScope()) + using (_databaseFactory.CreateScope()) { - var databaseType = _dbContext.Database.DatabaseType; + var databaseType = _databaseFactory.Database.DatabaseType; Assert.AreEqual(DatabaseType.SQLCe, databaseType); } } @@ -124,21 +123,20 @@ namespace Umbraco.Tests.Persistence } // re-create the database factory and database context with proper connection string - var dbFactory = new UmbracoDatabaseFactory(connString, Constants.DbProviderNames.SqlCe, _sqlSyntaxProviders, _logger, new TestDatabaseScopeAccessor(), Mock.Of()); - _dbContext = new DatabaseContext(dbFactory); + _databaseFactory = new UmbracoDatabaseFactory(connString, Constants.DbProviderNames.SqlCe, _sqlSyntaxProviders, _logger, new TestDatabaseScopeAccessor(), Mock.Of()); // create application context //var appCtx = new ApplicationContext( - // _dbContext, + // _databaseFactory, // new ServiceContext(migrationEntryService: Mock.Of()), // CacheHelper.CreateDisabledCacheHelper(), // new ProfilingLogger(Mock.Of(), Mock.Of())); // create the umbraco database DatabaseSchemaHelper schemaHelper; - using (_dbContext.CreateDatabaseScope()) + using (_databaseFactory.CreateScope()) { - schemaHelper = new DatabaseSchemaHelper(_dbContext.Database, _logger); + schemaHelper = new DatabaseSchemaHelper(_databaseFactory.Database, _logger); schemaHelper.CreateDatabaseSchema(_runtime, _migrationEntryService, false); } diff --git a/src/Umbraco.Tests/Persistence/LocksTests.cs b/src/Umbraco.Tests/Persistence/LocksTests.cs index b8cb685897..59b1cbbbda 100644 --- a/src/Umbraco.Tests/Persistence/LocksTests.cs +++ b/src/Umbraco.Tests/Persistence/LocksTests.cs @@ -43,7 +43,7 @@ namespace Umbraco.Tests.Persistence base.Initialize(); // create a few lock objects - var database = DatabaseContext.Database; + var database = DatabaseFactory.Database; database.BeginTransaction(IsolationLevel.RepeatableRead); try { @@ -63,7 +63,7 @@ namespace Umbraco.Tests.Persistence [Test] public void SingleReadLockTest() { - var database = DatabaseContext.Database; + var database = DatabaseFactory.Database; database.BeginTransaction(IsolationLevel.RepeatableRead); try { @@ -107,12 +107,12 @@ namespace Umbraco.Tests.Persistence private void ConcurrentReadersTestThread(Exception[] exceptions, int index, object locker, ref int acquired, int threadCount, ManualResetEventSlim ev) { // in a thread, must create a scope - using (DatabaseContext.CreateDatabaseScope()) + using (DatabaseFactory.CreateScope()) { IUmbracoDatabase database; try { - database = DatabaseContext.Database; + database = DatabaseFactory.Database; database.BeginTransaction(IsolationLevel.RepeatableRead); } catch (Exception e) @@ -173,12 +173,12 @@ namespace Umbraco.Tests.Persistence private void ConcurrentWritersTestThread(Exception[] exceptions, int index, object locker, ref int acquired) { // in a thread, must create a scope - using (DatabaseContext.CreateDatabaseScope()) + using (DatabaseFactory.CreateScope()) { IUmbracoDatabase database; try { - database = DatabaseContext.Database; + database = DatabaseFactory.Database; database.BeginTransaction(IsolationLevel.RepeatableRead); } catch (Exception e) @@ -240,12 +240,12 @@ namespace Umbraco.Tests.Persistence private void DeadLockTestThread(int id1, int id2, EventWaitHandle myEv, WaitHandle otherEv, ref Exception exception) { // in a thread, must create a scope - using (DatabaseContext.CreateDatabaseScope()) + using (DatabaseFactory.CreateScope()) { IUmbracoDatabase database; try { - database = DatabaseContext.Database; + database = DatabaseFactory.Database; database.BeginTransaction(IsolationLevel.RepeatableRead); } catch (Exception e) @@ -315,7 +315,7 @@ namespace Umbraco.Tests.Persistence private void NoDeadLockTestThread(int id, EventWaitHandle myEv, WaitHandle otherEv, ref Exception exception) { - var database = DatabaseContext.Database; + var database = DatabaseFactory.Database; try { database.BeginTransaction(IsolationLevel.RepeatableRead); diff --git a/src/Umbraco.Tests/Persistence/NPocoExtensionsTest.cs b/src/Umbraco.Tests/Persistence/NPocoExtensionsTest.cs index 0c2881e335..061051354d 100644 --- a/src/Umbraco.Tests/Persistence/NPocoExtensionsTest.cs +++ b/src/Umbraco.Tests/Persistence/NPocoExtensionsTest.cs @@ -23,7 +23,7 @@ namespace Umbraco.Tests.Persistence public void Can_Bulk_Insert_One_By_One() { // Arrange - var db = DatabaseContext.Database; + var db = DatabaseFactory.Database; var servers = new List(); for (var i = 0; i < 1000; i++) @@ -56,7 +56,7 @@ namespace Umbraco.Tests.Persistence public void Can_Bulk_Insert_One_By_One_Transaction_Rollback() { // Arrange - var db = DatabaseContext.Database; + var db = DatabaseFactory.Database; var servers = new List(); for (var i = 0; i < 1000; i++) @@ -139,7 +139,7 @@ namespace Umbraco.Tests.Persistence public void Can_Bulk_Insert_Native_Sql_Bulk_Inserts() { // Arrange - var db = DatabaseContext.Database; + var db = DatabaseFactory.Database; var servers = new List(); for (var i = 0; i < 1000; i++) @@ -172,7 +172,7 @@ namespace Umbraco.Tests.Persistence public void Can_Bulk_Insert_Native_Sql_Bulk_Inserts_Transaction_Rollback() { // Arrange - var db = DatabaseContext.Database; + var db = DatabaseFactory.Database; var servers = new List(); for (var i = 0; i < 1000; i++) @@ -205,7 +205,7 @@ namespace Umbraco.Tests.Persistence public void Generate_Bulk_Import_Sql() { // Arrange - var db = DatabaseContext.Database; + var db = DatabaseFactory.Database; var servers = new List(); for (var i = 0; i < 2; i++) @@ -235,7 +235,7 @@ namespace Umbraco.Tests.Persistence public void Generate_Bulk_Import_Sql_Exceeding_Max_Params() { // Arrange - var db = DatabaseContext.Database; + var db = DatabaseFactory.Database; var servers = new List(); for (var i = 0; i < 1500; i++) diff --git a/src/Umbraco.Tests/Persistence/Querying/ContentTypeSqlMappingTests.cs b/src/Umbraco.Tests/Persistence/Querying/ContentTypeSqlMappingTests.cs index 9e12a171c7..205ae7e06b 100644 --- a/src/Umbraco.Tests/Persistence/Querying/ContentTypeSqlMappingTests.cs +++ b/src/Umbraco.Tests/Persistence/Querying/ContentTypeSqlMappingTests.cs @@ -23,35 +23,35 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Can_Map_Content_Type_Templates_And_Allowed_Types() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("umbracoNode")))); - DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 55554, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,55554", SortOrder = 1, UniqueId = new Guid("87D1EAB6-AB27-4852-B3DF-DE8DBA4A1AA0"), Text = "Template 1", NodeObjectType = new Guid(Constants.ObjectTypes.Template), CreateDate = DateTime.Now }); - DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 55555, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,55555", SortOrder = 1, UniqueId = new Guid("3390BDF4-C974-4211-AA95-3812A8CE7C46"), Text = "Template 2", NodeObjectType = new Guid(Constants.ObjectTypes.Template), CreateDate = DateTime.Now }); - DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99997, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99997", SortOrder = 0, UniqueId = new Guid("BB3241D5-6842-4EFA-A82A-5F56885CF528"), Text = "Test Content Type 1", NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType), CreateDate = DateTime.Now }); - DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99998, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99998", SortOrder = 0, UniqueId = new Guid("EEA66B06-302E-49BA-A8B2-EDF07248BC59"), Text = "Test Content Type 2", NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType), CreateDate = DateTime.Now }); - DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99999, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99999", SortOrder = 0, UniqueId = new Guid("C45CC083-BB27-4C1C-B448-6F703CC9B799"), Text = "Test Content Type 2", NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType), CreateDate = DateTime.Now }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("umbracoNode")))); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("umbracoNode")))); + DatabaseFactory.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 55554, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,55554", SortOrder = 1, UniqueId = new Guid("87D1EAB6-AB27-4852-B3DF-DE8DBA4A1AA0"), Text = "Template 1", NodeObjectType = new Guid(Constants.ObjectTypes.Template), CreateDate = DateTime.Now }); + DatabaseFactory.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 55555, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,55555", SortOrder = 1, UniqueId = new Guid("3390BDF4-C974-4211-AA95-3812A8CE7C46"), Text = "Template 2", NodeObjectType = new Guid(Constants.ObjectTypes.Template), CreateDate = DateTime.Now }); + DatabaseFactory.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99997, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99997", SortOrder = 0, UniqueId = new Guid("BB3241D5-6842-4EFA-A82A-5F56885CF528"), Text = "Test Content Type 1", NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType), CreateDate = DateTime.Now }); + DatabaseFactory.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99998, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99998", SortOrder = 0, UniqueId = new Guid("EEA66B06-302E-49BA-A8B2-EDF07248BC59"), Text = "Test Content Type 2", NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType), CreateDate = DateTime.Now }); + DatabaseFactory.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99999, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99999", SortOrder = 0, UniqueId = new Guid("C45CC083-BB27-4C1C-B448-6F703CC9B799"), Text = "Test Content Type 2", NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType), CreateDate = DateTime.Now }); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("umbracoNode")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsTemplate")))); - DatabaseContext.Database.Insert("cmsTemplate", "pk", false, new TemplateDto { NodeId = 55554, Alias = "testTemplate1", Design = "", PrimaryKey = 22221}); - DatabaseContext.Database.Insert("cmsTemplate", "pk", false, new TemplateDto { NodeId = 55555, Alias = "testTemplate2", Design = "", PrimaryKey = 22222 }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsTemplate")))); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsTemplate")))); + DatabaseFactory.Database.Insert("cmsTemplate", "pk", false, new TemplateDto { NodeId = 55554, Alias = "testTemplate1", Design = "", PrimaryKey = 22221}); + DatabaseFactory.Database.Insert("cmsTemplate", "pk", false, new TemplateDto { NodeId = 55555, Alias = "testTemplate2", Design = "", PrimaryKey = 22222 }); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsTemplate")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsContentType")))); - DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88887, NodeId = 99997, Alias = "TestContentType1", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); - DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88888, NodeId = 99998, Alias = "TestContentType2", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); - DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88889, NodeId = 99999, Alias = "TestContentType3", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsContentType")))); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsContentType")))); + DatabaseFactory.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88887, NodeId = 99997, Alias = "TestContentType1", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); + DatabaseFactory.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88888, NodeId = 99998, Alias = "TestContentType2", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); + DatabaseFactory.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88889, NodeId = 99999, Alias = "TestContentType3", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsContentType")))); - DatabaseContext.Database.Insert(new ContentTypeTemplateDto { ContentTypeNodeId = 99997, IsDefault = true, TemplateNodeId = 55555 }); - DatabaseContext.Database.Insert(new ContentTypeTemplateDto { ContentTypeNodeId = 99997, IsDefault = false, TemplateNodeId = 55554 }); + DatabaseFactory.Database.Insert(new ContentTypeTemplateDto { ContentTypeNodeId = 99997, IsDefault = true, TemplateNodeId = 55555 }); + DatabaseFactory.Database.Insert(new ContentTypeTemplateDto { ContentTypeNodeId = 99997, IsDefault = false, TemplateNodeId = 55554 }); - DatabaseContext.Database.Insert(new ContentTypeAllowedContentTypeDto { AllowedId = 99998, Id = 99997, SortOrder = 1 }); - DatabaseContext.Database.Insert(new ContentTypeAllowedContentTypeDto { AllowedId = 99999, Id = 99997, SortOrder = 2}); + DatabaseFactory.Database.Insert(new ContentTypeAllowedContentTypeDto { AllowedId = 99998, Id = 99997, SortOrder = 1 }); + DatabaseFactory.Database.Insert(new ContentTypeAllowedContentTypeDto { AllowedId = 99999, Id = 99997, SortOrder = 2}); - DatabaseContext.Database.Insert(new ContentType2ContentTypeDto { ChildId = 99999, ParentId = 99997}); - DatabaseContext.Database.Insert(new ContentType2ContentTypeDto { ChildId = 99998, ParentId = 99997 }); + DatabaseFactory.Database.Insert(new ContentType2ContentTypeDto { ChildId = 99999, ParentId = 99997}); + DatabaseFactory.Database.Insert(new ContentType2ContentTypeDto { ChildId = 99998, ParentId = 99997 }); transaction.Complete(); } @@ -59,7 +59,7 @@ namespace Umbraco.Tests.Persistence.Querying IDictionary> allAssociatedTemplates; IDictionary> allParentContentTypeIds; var contentTypes = ContentTypeRepository.ContentTypeQueryMapper.MapContentTypes( - DatabaseContext.Database, SqlSyntax, out allAssociatedTemplates, out allParentContentTypeIds) + DatabaseFactory.Database, SqlSyntax, out allAssociatedTemplates, out allParentContentTypeIds) .Where(x => (new[] {99997, 99998}).Contains(x.Id)) .ToArray(); @@ -88,32 +88,32 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Can_Map_Media_Type_And_Allowed_Types() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("umbracoNode")))); - DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99997, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99997", SortOrder = 0, UniqueId = new Guid("BB3241D5-6842-4EFA-A82A-5F56885CF528"), Text = "Test Media Type 1", NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now }); - DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99998, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99998", SortOrder = 0, UniqueId = new Guid("EEA66B06-302E-49BA-A8B2-EDF07248BC59"), Text = "Test Media Type 2", NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now }); - DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99999, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99999", SortOrder = 0, UniqueId = new Guid("C45CC083-BB27-4C1C-B448-6F703CC9B799"), Text = "Test Media Type 2", NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("umbracoNode")))); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("umbracoNode")))); + DatabaseFactory.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99997, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99997", SortOrder = 0, UniqueId = new Guid("BB3241D5-6842-4EFA-A82A-5F56885CF528"), Text = "Test Media Type 1", NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now }); + DatabaseFactory.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99998, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99998", SortOrder = 0, UniqueId = new Guid("EEA66B06-302E-49BA-A8B2-EDF07248BC59"), Text = "Test Media Type 2", NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now }); + DatabaseFactory.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99999, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99999", SortOrder = 0, UniqueId = new Guid("C45CC083-BB27-4C1C-B448-6F703CC9B799"), Text = "Test Media Type 2", NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now }); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("umbracoNode")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsContentType")))); - DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88887, NodeId = 99997, Alias = "TestContentType1", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); - DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88888, NodeId = 99998, Alias = "TestContentType2", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); - DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88889, NodeId = 99999, Alias = "TestContentType3", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsContentType")))); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsContentType")))); + DatabaseFactory.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88887, NodeId = 99997, Alias = "TestContentType1", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); + DatabaseFactory.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88888, NodeId = 99998, Alias = "TestContentType2", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); + DatabaseFactory.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88889, NodeId = 99999, Alias = "TestContentType3", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsContentType")))); - DatabaseContext.Database.Insert(new ContentTypeAllowedContentTypeDto { AllowedId = 99998, Id = 99997, SortOrder = 1 }); - DatabaseContext.Database.Insert(new ContentTypeAllowedContentTypeDto { AllowedId = 99999, Id = 99997, SortOrder = 2 }); + DatabaseFactory.Database.Insert(new ContentTypeAllowedContentTypeDto { AllowedId = 99998, Id = 99997, SortOrder = 1 }); + DatabaseFactory.Database.Insert(new ContentTypeAllowedContentTypeDto { AllowedId = 99999, Id = 99997, SortOrder = 2 }); - DatabaseContext.Database.Insert(new ContentType2ContentTypeDto { ChildId = 99999, ParentId = 99997 }); - DatabaseContext.Database.Insert(new ContentType2ContentTypeDto { ChildId = 99998, ParentId = 99997 }); + DatabaseFactory.Database.Insert(new ContentType2ContentTypeDto { ChildId = 99999, ParentId = 99997 }); + DatabaseFactory.Database.Insert(new ContentType2ContentTypeDto { ChildId = 99998, ParentId = 99997 }); transaction.Complete(); } IDictionary> allParentContentTypeIds; var contentTypes = ContentTypeRepository.ContentTypeQueryMapper.MapMediaTypes( - DatabaseContext.Database, SqlSyntax, out allParentContentTypeIds) + DatabaseFactory.Database, SqlSyntax, out allParentContentTypeIds) .Where(x => (new[] { 99997, 99998 }).Contains(x.Id)) .ToArray(); @@ -138,44 +138,44 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Can_Map_All_Property_Groups_And_Types() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("umbracoNode")))); - DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 55555, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,55555", SortOrder = 1, UniqueId = new Guid("3390BDF4-C974-4211-AA95-3812A8CE7C46"), Text = "Test Data Type", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now }); - DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99999, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99999", SortOrder = 0, UniqueId = new Guid("129241F0-D24E-4FC3-92D1-BC2D48B7C431"), Text = "Test Content Type", NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType), CreateDate = DateTime.Now }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("umbracoNode")))); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("umbracoNode")))); + DatabaseFactory.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 55555, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,55555", SortOrder = 1, UniqueId = new Guid("3390BDF4-C974-4211-AA95-3812A8CE7C46"), Text = "Test Data Type", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now }); + DatabaseFactory.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99999, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99999", SortOrder = 0, UniqueId = new Guid("129241F0-D24E-4FC3-92D1-BC2D48B7C431"), Text = "Test Content Type", NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType), CreateDate = DateTime.Now }); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("umbracoNode")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsDataType")))); - DatabaseContext.Database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 44444, DataTypeId = 55555, PropertyEditorAlias = Constants.PropertyEditors.TextboxAlias, DbType = "Nvarchar" }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsDataType")))); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsDataType")))); + DatabaseFactory.Database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 44444, DataTypeId = 55555, PropertyEditorAlias = Constants.PropertyEditors.TextboxAlias, DbType = "Nvarchar" }); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsDataType")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsContentType")))); - DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88888, NodeId = 99999, Alias = "TestContentType", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsContentType")))); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsContentType")))); + DatabaseFactory.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88888, NodeId = 99999, Alias = "TestContentType", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsContentType")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsPropertyTypeGroup")))); - DatabaseContext.Database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 77776, UniqueId = 77776.ToGuid(), ContentTypeNodeId = 99999, Text = "Group1", SortOrder = 1 }); - DatabaseContext.Database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 77777, UniqueId = 77777.ToGuid(), ContentTypeNodeId = 99999, Text = "Group2", SortOrder = 2 }); - DatabaseContext.Database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 77778, UniqueId = 77778.ToGuid(), ContentTypeNodeId = 99999, Text = "Group3", SortOrder = 3 }); - DatabaseContext.Database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 77779, UniqueId = 77779.ToGuid(), ContentTypeNodeId = 99999, Text = "Group4", SortOrder = 4 }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsPropertyTypeGroup")))); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsPropertyTypeGroup")))); + DatabaseFactory.Database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 77776, UniqueId = 77776.ToGuid(), ContentTypeNodeId = 99999, Text = "Group1", SortOrder = 1 }); + DatabaseFactory.Database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 77777, UniqueId = 77777.ToGuid(), ContentTypeNodeId = 99999, Text = "Group2", SortOrder = 2 }); + DatabaseFactory.Database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 77778, UniqueId = 77778.ToGuid(), ContentTypeNodeId = 99999, Text = "Group3", SortOrder = 3 }); + DatabaseFactory.Database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 77779, UniqueId = 77779.ToGuid(), ContentTypeNodeId = 99999, Text = "Group4", SortOrder = 4 }); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsPropertyTypeGroup")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsPropertyType")))); - DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66662, UniqueId = 66662.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77776, Alias = "property1", Name = "Property 1", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null }); - DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66663, UniqueId = 66663.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77776, Alias = "property2", Name = "Property 2", SortOrder = 1, Mandatory = false, ValidationRegExp = null, Description = null }); - DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66664, UniqueId = 66664.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77777, Alias = "property3", Name = "Property 3", SortOrder = 2, Mandatory = false, ValidationRegExp = null, Description = null }); - DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66665, UniqueId = 66665.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77777, Alias = "property4", Name = "Property 4", SortOrder = 3, Mandatory = false, ValidationRegExp = null, Description = null }); - DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66666, UniqueId = 66666.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = null, Alias = "property5", Name = "Property 5", SortOrder = 4, Mandatory = false, ValidationRegExp = null, Description = null }); - DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66667, UniqueId = 66667.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77778, Alias = "property6", Name = "Property 6", SortOrder = 5, Mandatory = false, ValidationRegExp = null, Description = null }); - DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66668, UniqueId = 66668.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77778, Alias = "property7", Name = "Property 7", SortOrder = 6, Mandatory = false, ValidationRegExp = null, Description = null }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsPropertyType")))); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsPropertyType")))); + DatabaseFactory.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66662, UniqueId = 66662.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77776, Alias = "property1", Name = "Property 1", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null }); + DatabaseFactory.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66663, UniqueId = 66663.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77776, Alias = "property2", Name = "Property 2", SortOrder = 1, Mandatory = false, ValidationRegExp = null, Description = null }); + DatabaseFactory.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66664, UniqueId = 66664.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77777, Alias = "property3", Name = "Property 3", SortOrder = 2, Mandatory = false, ValidationRegExp = null, Description = null }); + DatabaseFactory.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66665, UniqueId = 66665.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77777, Alias = "property4", Name = "Property 4", SortOrder = 3, Mandatory = false, ValidationRegExp = null, Description = null }); + DatabaseFactory.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66666, UniqueId = 66666.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = null, Alias = "property5", Name = "Property 5", SortOrder = 4, Mandatory = false, ValidationRegExp = null, Description = null }); + DatabaseFactory.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66667, UniqueId = 66667.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77778, Alias = "property6", Name = "Property 6", SortOrder = 5, Mandatory = false, ValidationRegExp = null, Description = null }); + DatabaseFactory.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66668, UniqueId = 66668.ToGuid(), DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77778, Alias = "property7", Name = "Property 7", SortOrder = 6, Mandatory = false, ValidationRegExp = null, Description = null }); + DatabaseFactory.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsPropertyType")))); transaction.Complete(); } IDictionary allPropTypeCollection; IDictionary allPropGroupCollection; - ContentTypeRepository.ContentTypeQueryMapper.MapGroupsAndProperties(new[] { 99999 }, DatabaseContext.Database, SqlSyntax, out allPropTypeCollection, out allPropGroupCollection); + ContentTypeRepository.ContentTypeQueryMapper.MapGroupsAndProperties(new[] { 99999 }, DatabaseFactory.Database, SqlSyntax, out allPropTypeCollection, out allPropGroupCollection); var propGroupCollection = allPropGroupCollection[99999]; var propTypeCollection = allPropTypeCollection[99999]; diff --git a/src/Umbraco.Tests/Persistence/Repositories/AuditRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/AuditRepositoryTest.cs index cbba268b3b..c1c8e6cc4d 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/AuditRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/AuditRepositoryTest.cs @@ -24,7 +24,7 @@ namespace Umbraco.Tests.Persistence.Repositories unitOfWork.Complete(); } - var dtos = DatabaseContext.Database.Fetch("WHERE id > -1"); + var dtos = DatabaseFactory.Database.Fetch("WHERE id > -1"); Assert.That(dtos.Any(), Is.True); Assert.That(dtos.First().Comment, Is.EqualTo("This is a System audit trail")); diff --git a/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs index 9bb3cff20b..10f4992632 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs @@ -482,8 +482,8 @@ namespace Umbraco.Tests.Persistence.Repositories try { - DatabaseContext.Database.AsUmbracoDatabase().EnableSqlTrace = true; - DatabaseContext.Database.AsUmbracoDatabase().EnableSqlCount = true; + DatabaseFactory.Database.AsUmbracoDatabase().EnableSqlTrace = true; + DatabaseFactory.Database.AsUmbracoDatabase().EnableSqlCount = true; var result = repository.GetPagedResultsByQuery(query, 0, 2, out totalRecords, "title", Direction.Ascending, false); @@ -496,8 +496,8 @@ namespace Umbraco.Tests.Persistence.Repositories } finally { - DatabaseContext.Database.AsUmbracoDatabase().EnableSqlTrace = false; - DatabaseContext.Database.AsUmbracoDatabase().EnableSqlCount = false; + DatabaseFactory.Database.AsUmbracoDatabase().EnableSqlTrace = false; + DatabaseFactory.Database.AsUmbracoDatabase().EnableSqlCount = false; } } } @@ -517,8 +517,8 @@ namespace Umbraco.Tests.Persistence.Repositories try { - DatabaseContext.Database.AsUmbracoDatabase().EnableSqlTrace = true; - DatabaseContext.Database.AsUmbracoDatabase().EnableSqlCount = true; + DatabaseFactory.Database.AsUmbracoDatabase().EnableSqlTrace = true; + DatabaseFactory.Database.AsUmbracoDatabase().EnableSqlCount = true; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending, true); // Assert @@ -528,8 +528,8 @@ namespace Umbraco.Tests.Persistence.Repositories } finally { - DatabaseContext.Database.AsUmbracoDatabase().EnableSqlTrace = false; - DatabaseContext.Database.AsUmbracoDatabase().EnableSqlCount = false; + DatabaseFactory.Database.AsUmbracoDatabase().EnableSqlTrace = false; + DatabaseFactory.Database.AsUmbracoDatabase().EnableSqlCount = false; } } } diff --git a/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs index 9bfb501d18..fcf358b082 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs @@ -609,7 +609,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Act var contentTypes = repository.GetAll(); int count = - DatabaseContext.Database.ExecuteScalar( + DatabaseFactory.Database.ExecuteScalar( "SELECT COUNT(*) FROM umbracoNode WHERE nodeObjectType = @NodeObjectType", new {NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType)}); @@ -632,7 +632,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Act var contentTypes = ((IReadRepository)repository).GetAll(allGuidIds); int count = - DatabaseContext.Database.ExecuteScalar( + DatabaseFactory.Database.ExecuteScalar( "SELECT COUNT(*) FROM umbracoNode WHERE nodeObjectType = @NodeObjectType", new { NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType) }); diff --git a/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs index 4a008bff37..50d3a115ce 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs @@ -315,7 +315,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Act var mediaTypes = repository.GetAll(); int count = - DatabaseContext.Database.ExecuteScalar( + DatabaseFactory.Database.ExecuteScalar( "SELECT COUNT(*) FROM umbracoNode WHERE nodeObjectType = @NodeObjectType", new {NodeObjectType = new Guid(Constants.ObjectTypes.MediaType)}); @@ -341,7 +341,7 @@ namespace Umbraco.Tests.Persistence.Repositories var mediaTypes = ((IReadRepository)repository).GetAll(allGuidIds); int count = - DatabaseContext.Database.ExecuteScalar( + DatabaseFactory.Database.ExecuteScalar( "SELECT COUNT(*) FROM umbracoNode WHERE nodeObjectType = @NodeObjectType", new { NodeObjectType = new Guid(Constants.ObjectTypes.MediaType) }); diff --git a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs index 3481e68296..6a9422ec2a 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs @@ -311,7 +311,7 @@ namespace Umbraco.Tests.Persistence.Repositories { if (isCount) { - var sqlCount = DatabaseContext.Sql() + var sqlCount = DatabaseFactory.Sql() .SelectCount() .From() .InnerJoin().On(left => left.NodeId, right => right.NodeId) @@ -322,7 +322,7 @@ namespace Umbraco.Tests.Persistence.Repositories return sqlCount; } - var sql = DatabaseContext.Sql(); + var sql = DatabaseFactory.Sql(); sql.Select("umbracoNode.*", "cmsContent.contentType", "cmsContentType.alias AS ContentTypeAlias", "cmsContentVersion.VersionId", "cmsContentVersion.VersionDate", "cmsMember.Email", "cmsMember.LoginName", "cmsMember.Password", "cmsPropertyData.id AS PropertyDataId", "cmsPropertyData.propertytypeid", @@ -346,7 +346,7 @@ namespace Umbraco.Tests.Persistence.Repositories private Sql GetSubquery() { - var sql = DatabaseContext.Sql(); + var sql = DatabaseFactory.Sql(); sql.Select("umbracoNode.id") .From() .InnerJoin().On(left => left.NodeId, right => right.NodeId) diff --git a/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs index 0b2856700b..5ebdc94df9 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs @@ -820,7 +820,7 @@ namespace Umbraco.Tests.Persistence.Repositories unitOfWork.Flush(); - Assert.AreEqual(0, DatabaseContext.Database.ExecuteScalar( + Assert.AreEqual(0, DatabaseFactory.Database.ExecuteScalar( "SELECT COUNT(*) FROM cmsTagRelationship WHERE nodeId=@nodeId AND propertyTypeId=@propTypeId", new { nodeId = content1.Id, propTypeId = contentType.PropertyTypes.First().Id })); } diff --git a/src/Umbraco.Tests/Persistence/SchemaValidationTest.cs b/src/Umbraco.Tests/Persistence/SchemaValidationTest.cs index 0bfa91436b..5e228612fb 100644 --- a/src/Umbraco.Tests/Persistence/SchemaValidationTest.cs +++ b/src/Umbraco.Tests/Persistence/SchemaValidationTest.cs @@ -17,7 +17,7 @@ namespace Umbraco.Tests.Persistence public void DatabaseSchemaCreation_Produces_DatabaseSchemaResult_With_Zero_Errors() { // Arrange - var db = DatabaseContext.Database; + var db = DatabaseFactory.Database; var schema = new DatabaseSchemaCreation(db, Logger); // Act diff --git a/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs b/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs index e5b0337457..51616ba2b6 100644 --- a/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs +++ b/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs @@ -14,13 +14,13 @@ namespace Umbraco.Tests.Persistence protected DatabaseSchemaHelper DatabaseSchemaHelper { - get { return _schemaHelper ?? (_schemaHelper = new DatabaseSchemaHelper(DatabaseContext.Database, Logger)); } + get { return _schemaHelper ?? (_schemaHelper = new DatabaseSchemaHelper(DatabaseFactory.Database, Logger)); } } [Test] public void Can_Create_umbracoNode_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); @@ -31,7 +31,7 @@ namespace Umbraco.Tests.Persistence [Test] public void Can_Create_umbracoAccess_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -43,7 +43,7 @@ namespace Umbraco.Tests.Persistence [Test] public void Can_Create_umbracoAccessRule_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -57,7 +57,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsContentType2ContentType_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -70,7 +70,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsContentTypeAllowedContentType_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -84,7 +84,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsContentType_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -97,7 +97,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsContentVersion_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -112,7 +112,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsContentXml_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -127,7 +127,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsDataType_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -140,7 +140,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsDataTypePreValues_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -154,7 +154,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsDictionary_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); @@ -166,7 +166,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsLanguageText_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -180,7 +180,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsTemplate_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -193,7 +193,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsDocument_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -209,7 +209,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsDocumentType_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -224,7 +224,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_umbracoDomains_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -237,7 +237,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_umbracoLanguage_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); @@ -249,7 +249,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_umbracoLog_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); @@ -261,7 +261,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsMacro_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); @@ -273,7 +273,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsMember_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -288,7 +288,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsMember2MemberGroup_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -304,7 +304,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsMemberType_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -318,7 +318,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsPreviewXml_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -334,7 +334,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsPropertyData_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -351,7 +351,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsPropertyType_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -367,7 +367,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsPropertyTypeGroup_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -381,7 +381,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_umbracoRelation_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -395,7 +395,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_umbracoRelationType_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); @@ -407,7 +407,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsStylesheet_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -420,7 +420,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsStylesheetProperty_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -433,7 +433,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsTags_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); @@ -445,7 +445,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsTagRelationship_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -465,7 +465,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsTask_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -481,7 +481,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_cmsTaskType_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); @@ -493,7 +493,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_umbracoDeployDependency_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -506,7 +506,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_umbracoDeployChecksum_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); @@ -518,7 +518,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_umbracoUser_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -531,7 +531,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_umbracoUserType_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); @@ -543,7 +543,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_umbracoUser2app_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -557,7 +557,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_umbracoUser2NodeNotify_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); @@ -572,7 +572,7 @@ namespace Umbraco.Tests.Persistence public void Can_Create_umbracoUser2NodePermission_Table() { - using (var transaction = DatabaseContext.Database.GetTransaction()) + using (var transaction = DatabaseFactory.Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); diff --git a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs index cf9de5462f..4bf355fda7 100644 --- a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs +++ b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs @@ -163,7 +163,6 @@ namespace Umbraco.Tests.Runtimes base.Compose(composition); composition.Container.Register(factory => SettingsForTests.GetDefault()); - composition.Container.Register(factory => new DatabaseContext(factory.GetInstance()), new PerContainerLifetime()); composition.Container.RegisterSingleton(); Composed = true; diff --git a/src/Umbraco.Tests/Services/ContentServiceTests.cs b/src/Umbraco.Tests/Services/ContentServiceTests.cs index c2ff3f8d8d..ec3519077d 100644 --- a/src/Umbraco.Tests/Services/ContentServiceTests.cs +++ b/src/Umbraco.Tests/Services/ContentServiceTests.cs @@ -522,15 +522,15 @@ namespace Umbraco.Tests.Services // Assert var propertyTypeId = contentType.PropertyTypes.Single(x => x.Alias == "tags").Id; - Assert.AreEqual(4, DatabaseContext.Database.ExecuteScalar( + Assert.AreEqual(4, DatabaseFactory.Database.ExecuteScalar( "SELECT COUNT(*) FROM cmsTagRelationship WHERE nodeId=@nodeId AND propertyTypeId=@propTypeId", new { nodeId = content.Id, propTypeId = propertyTypeId })); - Assert.AreEqual(3, DatabaseContext.Database.ExecuteScalar( + Assert.AreEqual(3, DatabaseFactory.Database.ExecuteScalar( "SELECT COUNT(*) FROM cmsTagRelationship WHERE nodeId=@nodeId AND propertyTypeId=@propTypeId", new { nodeId = child1.Id, propTypeId = propertyTypeId })); - Assert.AreEqual(2, DatabaseContext.Database.ExecuteScalar( + Assert.AreEqual(2, DatabaseFactory.Database.ExecuteScalar( "SELECT COUNT(*) FROM cmsTagRelationship WHERE nodeId=@nodeId AND propertyTypeId=@propTypeId", new { nodeId = child2.Id, propTypeId = propertyTypeId })); } @@ -561,7 +561,7 @@ namespace Umbraco.Tests.Services //the value will have changed but the tags db table will not have Assert.AreEqual(5, content.Properties["tags"].Value.ToString().Split(',').Distinct().Count()); var propertyTypeId = contentType.PropertyTypes.Single(x => x.Alias == "tags").Id; - Assert.AreEqual(4, DatabaseContext.Database.ExecuteScalar( + Assert.AreEqual(4, DatabaseFactory.Database.ExecuteScalar( "SELECT COUNT(*) FROM cmsTagRelationship WHERE nodeId=@nodeId AND propertyTypeId=@propTypeId", new { nodeId = content.Id, propTypeId = propertyTypeId })); } @@ -590,7 +590,7 @@ namespace Umbraco.Tests.Services // Assert Assert.AreEqual(4, content.Properties["tags"].Value.ToString().Split(',').Distinct().Count()); var propertyTypeId = contentType.PropertyTypes.Single(x => x.Alias == "tags").Id; - Assert.AreEqual(4, DatabaseContext.Database.ExecuteScalar( + Assert.AreEqual(4, DatabaseFactory.Database.ExecuteScalar( "SELECT COUNT(*) FROM cmsTagRelationship WHERE nodeId=@nodeId AND propertyTypeId=@propTypeId", new {nodeId = content.Id, propTypeId = propertyTypeId})); } @@ -619,7 +619,7 @@ namespace Umbraco.Tests.Services // Assert Assert.AreEqual(5, content.Properties["tags"].Value.ToString().Split(',').Distinct().Count()); var propertyTypeId = contentType.PropertyTypes.Single(x => x.Alias == "tags").Id; - Assert.AreEqual(5, DatabaseContext.Database.ExecuteScalar( + Assert.AreEqual(5, DatabaseFactory.Database.ExecuteScalar( "SELECT COUNT(*) FROM cmsTagRelationship WHERE nodeId=@nodeId AND propertyTypeId=@propTypeId", new { nodeId = content.Id, propTypeId = propertyTypeId })); } @@ -648,7 +648,7 @@ namespace Umbraco.Tests.Services // Assert Assert.AreEqual(2, content.Properties["tags"].Value.ToString().Split(',').Distinct().Count()); var propertyTypeId = contentType.PropertyTypes.Single(x => x.Alias == "tags").Id; - Assert.AreEqual(2, DatabaseContext.Database.ExecuteScalar( + Assert.AreEqual(2, DatabaseFactory.Database.ExecuteScalar( "SELECT COUNT(*) FROM cmsTagRelationship WHERE nodeId=@nodeId AND propertyTypeId=@propTypeId", new { nodeId = content.Id, propTypeId = propertyTypeId })); } diff --git a/src/Umbraco.Tests/Services/ContentTypeServiceTests.cs b/src/Umbraco.Tests/Services/ContentTypeServiceTests.cs index 30c12ae052..e161255d3a 100644 --- a/src/Umbraco.Tests/Services/ContentTypeServiceTests.cs +++ b/src/Umbraco.Tests/Services/ContentTypeServiceTests.cs @@ -56,14 +56,14 @@ namespace Umbraco.Tests.Services foreach (var c in contentItems1) { - var xml = DatabaseContext.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = c.Id }); + var xml = DatabaseFactory.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = c.Id }); Assert.IsNotNull(xml); Assert.IsTrue(xml.Xml.StartsWith("("WHERE nodeId = @Id", new { Id = c.Id }); + var xml = DatabaseFactory.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = c.Id }); Assert.IsNotNull(xml); Assert.IsTrue(xml.Xml.StartsWith("("WHERE nodeId = @Id", new { Id = c.Id }); + var xml = DatabaseFactory.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = c.Id }); Assert.IsNotNull(xml); Assert.IsTrue(xml.Xml.Contains(elementToMatch)); //verify that it is there before we remove the property } @@ -95,7 +95,7 @@ namespace Umbraco.Tests.Services foreach (var c in contentItems1) { - var xml = DatabaseContext.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = c.Id }); + var xml = DatabaseFactory.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = c.Id }); Assert.IsNotNull(xml); Assert.IsFalse(xml.Xml.Contains(elementToMatch)); //verify that it is no longer there } diff --git a/src/Umbraco.Tests/Services/Importing/PackageImportTests.cs b/src/Umbraco.Tests/Services/Importing/PackageImportTests.cs index 3c38eba386..892f5113f1 100644 --- a/src/Umbraco.Tests/Services/Importing/PackageImportTests.cs +++ b/src/Umbraco.Tests/Services/Importing/PackageImportTests.cs @@ -84,7 +84,7 @@ namespace Umbraco.Tests.Services.Importing var mRBasePage = contentTypes.First(x => x.Alias == "MRBasePage"); foreach (var propertyType in mRBasePage.PropertyTypes) { - var propertyTypeDto = this.DatabaseContext.Database.First("WHERE id = @id", new { id = propertyType.Id }); + var propertyTypeDto = this.DatabaseFactory.Database.First("WHERE id = @id", new { id = propertyType.Id }); Assert.AreEqual(propertyTypeDto.UniqueId, propertyType.Key); } } @@ -307,7 +307,7 @@ namespace Umbraco.Tests.Services.Importing where (string)doc.Attribute("isDoc") == "" select doc).Count(); - var database = Current.DatabaseContext.Database; + var database = Current.DatabaseFactory.Database; var dtos = database.Fetch("WHERE datatypeNodeId = @Id", new { dataTypeDefinitions.First().Id }); int preValueId; int.TryParse(contents.First().GetValue("testList"), out preValueId); diff --git a/src/Umbraco.Tests/Services/LocalizationServiceTests.cs b/src/Umbraco.Tests/Services/LocalizationServiceTests.cs index 1e89feb741..8327b279b9 100644 --- a/src/Umbraco.Tests/Services/LocalizationServiceTests.cs +++ b/src/Umbraco.Tests/Services/LocalizationServiceTests.cs @@ -130,22 +130,22 @@ namespace Umbraco.Tests.Services currParentId = desc1.Key; } - DatabaseContext.Database.AsUmbracoDatabase().EnableSqlTrace = true; - DatabaseContext.Database.AsUmbracoDatabase().EnableSqlCount = true; + DatabaseFactory.Database.AsUmbracoDatabase().EnableSqlTrace = true; + DatabaseFactory.Database.AsUmbracoDatabase().EnableSqlCount = true; var items = ServiceContext.LocalizationService.GetDictionaryItemDescendants(_parentItemGuidId) .ToArray(); - Debug.WriteLine("SQL CALLS: " + DatabaseContext.Database.AsUmbracoDatabase().SqlCount); + Debug.WriteLine("SQL CALLS: " + DatabaseFactory.Database.AsUmbracoDatabase().SqlCount); Assert.AreEqual(51, items.Length); //there's a call or two to get languages, so apart from that there should only be one call per level - Assert.Less(DatabaseContext.Database.AsUmbracoDatabase().SqlCount, 30); + Assert.Less(DatabaseFactory.Database.AsUmbracoDatabase().SqlCount, 30); } finally { - DatabaseContext.Database.AsUmbracoDatabase().EnableSqlTrace = false; - DatabaseContext.Database.AsUmbracoDatabase().EnableSqlCount = false; + DatabaseFactory.Database.AsUmbracoDatabase().EnableSqlTrace = false; + DatabaseFactory.Database.AsUmbracoDatabase().EnableSqlCount = false; } } diff --git a/src/Umbraco.Tests/Services/MemberServiceTests.cs b/src/Umbraco.Tests/Services/MemberServiceTests.cs index b6d51c12da..5aa0701767 100644 --- a/src/Umbraco.Tests/Services/MemberServiceTests.cs +++ b/src/Umbraco.Tests/Services/MemberServiceTests.cs @@ -159,7 +159,7 @@ namespace Umbraco.Tests.Services public void Can_Get_Members_In_Role() { ServiceContext.MemberService.AddRole("MyTestRole1"); - var roleId = DatabaseContext.Database.ExecuteScalar("SELECT id from umbracoNode where [text] = 'MyTestRole1'"); + var roleId = DatabaseFactory.Database.ExecuteScalar("SELECT id from umbracoNode where [text] = 'MyTestRole1'"); IMemberType memberType = MockedContentTypes.CreateSimpleMemberType(); ServiceContext.MemberTypeService.Save(memberType); @@ -168,8 +168,8 @@ namespace Umbraco.Tests.Services var member2 = MockedMember.CreateSimpleMember(memberType, "test2", "test2@test.com", "pass", "test2"); ServiceContext.MemberService.Save(member2); - DatabaseContext.Database.Insert(new Member2MemberGroupDto {MemberGroup = roleId, Member = member1.Id}); - DatabaseContext.Database.Insert(new Member2MemberGroupDto { MemberGroup = roleId, Member = member2.Id }); + DatabaseFactory.Database.Insert(new Member2MemberGroupDto {MemberGroup = roleId, Member = member1.Id}); + DatabaseFactory.Database.Insert(new Member2MemberGroupDto { MemberGroup = roleId, Member = member2.Id }); var membersInRole = ServiceContext.MemberService.GetMembersInRole("MyTestRole1"); Assert.AreEqual(2, membersInRole.Count()); @@ -338,7 +338,7 @@ namespace Umbraco.Tests.Services IMember member = MockedMember.CreateSimpleMember(memberType, "test", "test@test.com", "pass", "test"); ServiceContext.MemberService.Save(member); - var xml = DatabaseContext.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = member.Id }); + var xml = DatabaseFactory.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = member.Id }); Assert.IsNotNull(xml); } @@ -1036,14 +1036,14 @@ namespace Umbraco.Tests.Services result.LastLoginDate.TruncateTo(DateTimeExtensions.DateTruncate.Second)); //now ensure the col is correct - var sql = DatabaseContext.Sql().Select("cmsPropertyData.*") + var sql = DatabaseFactory.Sql().Select("cmsPropertyData.*") .From() .InnerJoin() .On(dto => dto.PropertyTypeId, dto => dto.Id) .Where(dto => dto.NodeId == member.Id) .Where(dto => dto.Alias == Constants.Conventions.Member.LastLoginDate); - var colResult = DatabaseContext.Database.Fetch(sql); + var colResult = DatabaseFactory.Database.Fetch(sql); Assert.AreEqual(1, colResult.Count); Assert.IsTrue(colResult.First().Date.HasValue); diff --git a/src/Umbraco.Tests/Services/MemberTypeServiceTests.cs b/src/Umbraco.Tests/Services/MemberTypeServiceTests.cs index e67e08cfda..255e34139e 100644 --- a/src/Umbraco.Tests/Services/MemberTypeServiceTests.cs +++ b/src/Umbraco.Tests/Services/MemberTypeServiceTests.cs @@ -115,13 +115,13 @@ namespace Umbraco.Tests.Services foreach (var c in contentItems1) { - var xml = DatabaseContext.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = c.Id }); + var xml = DatabaseFactory.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = c.Id }); Assert.IsNotNull(xml); Assert.IsTrue(xml.Xml.StartsWith("("WHERE nodeId = @Id", new { Id = c.Id }); + var xml = DatabaseFactory.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = c.Id }); Assert.IsNotNull(xml); Assert.IsTrue(xml.Xml.StartsWith("("WHERE nodeId = @Id", new { Id = c.Id }); + var xml = DatabaseFactory.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = c.Id }); Assert.IsNotNull(xml); Assert.IsTrue(xml.Xml.Contains(elementToMatch)); //verify that it is there before we remove the property } @@ -156,7 +156,7 @@ namespace Umbraco.Tests.Services foreach (var c in contentItems1) { - var xml = DatabaseContext.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = c.Id }); + var xml = DatabaseFactory.Database.FirstOrDefault("WHERE nodeId = @Id", new { Id = c.Id }); Assert.IsNotNull(xml); Assert.IsFalse(xml.Xml.Contains(elementToMatch)); //verify that it is no longer there } diff --git a/src/Umbraco.Tests/Services/PerformanceTests.cs b/src/Umbraco.Tests/Services/PerformanceTests.cs index 9fee816566..f64ea88bd8 100644 --- a/src/Umbraco.Tests/Services/PerformanceTests.cs +++ b/src/Umbraco.Tests/Services/PerformanceTests.cs @@ -161,7 +161,7 @@ namespace Umbraco.Tests.Services for (var i = 0; i < 10; i++) { //clear all the xml entries - DatabaseContext.Database.Execute(@"DELETE FROM cmsContentXml WHERE nodeId IN + DatabaseFactory.Database.Execute(@"DELETE FROM cmsContentXml WHERE nodeId IN (SELECT DISTINCT cmsContentXml.nodeId FROM cmsContentXml INNER JOIN cmsContent ON cmsContentXml.nodeId = cmsContent.nodeId)"); @@ -169,7 +169,7 @@ namespace Umbraco.Tests.Services var xmlItems = nodes.Select(node => new ContentXmlDto { NodeId = node.NodeId, Xml = UpdatedXmlStructure }).ToList(); foreach (var xml in xmlItems) { - var result = DatabaseContext.Database.Insert(xml); + var result = DatabaseFactory.Database.Insert(xml); } } } @@ -184,7 +184,7 @@ namespace Umbraco.Tests.Services var xmlItems = nodes.Select(node => new ContentXmlDto { NodeId = node.NodeId, Xml = UpdatedXmlStructure }).ToList(); foreach (var xml in xmlItems) { - var result = DatabaseContext.Database.Update(xml); + var result = DatabaseFactory.Database.Update(xml); } } } @@ -196,13 +196,13 @@ namespace Umbraco.Tests.Services for (var i = 0; i < 10; i++) { //clear all the xml entries - DatabaseContext.Database.Execute(@"DELETE FROM cmsContentXml WHERE nodeId IN + DatabaseFactory.Database.Execute(@"DELETE FROM cmsContentXml WHERE nodeId IN (SELECT DISTINCT cmsContentXml.nodeId FROM cmsContentXml INNER JOIN cmsContent ON cmsContentXml.nodeId = cmsContent.nodeId)"); //now we insert each record for the ones we've deleted like we do in the content service. var xmlItems = nodes.Select(node => new ContentXmlDto { NodeId = node.NodeId, Xml = UpdatedXmlStructure }).ToList(); - DatabaseContext.Database.BulkInsertRecordsWithTransaction(xmlItems); + DatabaseFactory.Database.BulkInsertRecordsWithTransaction(xmlItems); } } @@ -215,15 +215,15 @@ namespace Umbraco.Tests.Services //now we insert each record for the ones we've deleted like we do in the content service. var xmlItems = nodes.Select(node => new ContentXmlDto { NodeId = node.NodeId, Xml = UpdatedXmlStructure }).ToList(); - using (var tr = DatabaseContext.Database.GetTransaction()) + using (var tr = DatabaseFactory.Database.GetTransaction()) { //clear all the xml entries - DatabaseContext.Database.Execute(@"DELETE FROM cmsContentXml WHERE nodeId IN + DatabaseFactory.Database.Execute(@"DELETE FROM cmsContentXml WHERE nodeId IN (SELECT DISTINCT cmsContentXml.nodeId FROM cmsContentXml INNER JOIN cmsContent ON cmsContentXml.nodeId = cmsContent.nodeId)"); - DatabaseContext.Database.BulkInsertRecords(xmlItems); + DatabaseFactory.Database.BulkInsertRecords(xmlItems); tr.Complete(); } @@ -291,21 +291,21 @@ namespace Umbraco.Tests.Services Path = "" }); } - DatabaseContext.Database.BulkInsertRecordsWithTransaction(nodes); + DatabaseFactory.Database.BulkInsertRecordsWithTransaction(nodes); //re-get the nodes with ids - var sql = DatabaseContext.Sql(); + var sql = DatabaseFactory.Sql(); sql.SelectAll().From().Where(x => x.NodeObjectType == customObjectType); - nodes = DatabaseContext.Database.Fetch(sql); + nodes = DatabaseFactory.Database.Fetch(sql); //create the cmsContent data, each with a new content type id (so we can query on it later if needed) var contentTypeId = 0; var cmsContentItems = nodes.Select(node => new ContentDto { NodeId = node.NodeId, ContentTypeId = contentTypeId++ }).ToList(); - DatabaseContext.Database.BulkInsertRecordsWithTransaction(cmsContentItems); + DatabaseFactory.Database.BulkInsertRecordsWithTransaction(cmsContentItems); //create the xml data var xmlItems = nodes.Select(node => new ContentXmlDto { NodeId = node.NodeId, Xml = TestXmlStructure }).ToList(); - DatabaseContext.Database.BulkInsertRecordsWithTransaction(xmlItems); + DatabaseFactory.Database.BulkInsertRecordsWithTransaction(xmlItems); return nodes; } diff --git a/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs b/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs index 1a1eaef823..9247f5dece 100644 --- a/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs +++ b/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs @@ -56,7 +56,7 @@ namespace Umbraco.Tests.Services { var t = new Thread(() => { - using (DatabaseContext.CreateDatabaseScope()) + using (DatabaseFactory.CreateScope()) { try { @@ -127,7 +127,7 @@ namespace Umbraco.Tests.Services { var t = new Thread(() => { - using (DatabaseContext.CreateDatabaseScope()) + using (DatabaseFactory.CreateScope()) { try { diff --git a/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs b/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs index 3e46e456eb..ccac8e5818 100644 --- a/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs +++ b/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs @@ -62,7 +62,7 @@ namespace Umbraco.Tests.TestHelpers protected ServiceContext ServiceContext => Core.DI.Current.Services; - protected DatabaseContext DatabaseContext => Core.DI.Current.DatabaseContext; + protected IUmbracoDatabaseFactory DatabaseFactory => Core.DI.Current.DatabaseFactory; public override void SetUp() { @@ -101,7 +101,7 @@ namespace Umbraco.Tests.TestHelpers [TestFixtureTearDown] public void FixtureTearDown() { - RemoveDatabaseFile(Core.DI.Current.HasContainer ? Core.DI.Current.DatabaseContext.Database : null); + RemoveDatabaseFile(Core.DI.Current.HasContainer ? Core.DI.Current.DatabaseFactory.Database : null); } public override void TearDown() @@ -111,7 +111,7 @@ namespace Umbraco.Tests.TestHelpers try { if (Options.Database == UmbracoTestOptions.Database.NewSchemaPerTest) - RemoveDatabaseFile(Core.DI.Current.HasContainer ? Core.DI.Current.Container.TryGetInstance()?.Database : null); + RemoveDatabaseFile(Core.DI.Current.HasContainer ? Core.DI.Current.Container.TryGetInstance()?.Database : null); AppDomain.CurrentDomain.SetData("DataDirectory", null); @@ -274,7 +274,7 @@ namespace Umbraco.Tests.TestHelpers if (Options.Database == UmbracoTestOptions.Database.None || Options.Database == UmbracoTestOptions.Database.NewEmptyPerTest) return; - _databaseScope = Core.DI.Current.DatabaseContext.CreateDatabaseScope(); + _databaseScope = Core.DI.Current.DatabaseFactory.CreateScope(); //create the schema and load default data if: // - is the first test in the session @@ -286,7 +286,7 @@ namespace Umbraco.Tests.TestHelpers || Options.Database == UmbracoTestOptions.Database.NewSchemaPerTest || (FirstTestInFixture && Options.Database == UmbracoTestOptions.Database.NewSchemaPerFixture))) { - var database = Core.DI.Current.DatabaseContext.Database; + var database = Core.DI.Current.DatabaseFactory.Database; var schemaHelper = new DatabaseSchemaHelper(database, Logger); //Create the umbraco database and its base data schemaHelper.CreateDatabaseSchema(Mock.Of(), Mock.Of()); diff --git a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs index d008e606c4..4f5897e04f 100644 --- a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs +++ b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs @@ -34,16 +34,6 @@ namespace Umbraco.Tests.Testing.TestingTests Assert.Pass(); } - [Test] - public void Can_Mock_Database_Context() - { - var databaseFactory = TestObjects.GetDatabaseFactoryMock(); - - // ReSharper disable once UnusedVariable - var databaseContext = new DatabaseContext(databaseFactory); - Assert.Pass(); - } - [Test] public void Can_Mock_Umbraco_Context() { diff --git a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs index 9d96bb241f..4e4526385a 100644 --- a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs +++ b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs @@ -260,7 +260,6 @@ namespace Umbraco.Tests.Testing sqlSyntaxProviders, Logger, f.GetInstance(), Mock.Of())); - Container.RegisterSingleton(f => new DatabaseContext(f.GetInstance())); Container.RegisterCollectionBuilder(); // empty Container.Register(factory diff --git a/src/Umbraco.Web/BatchedDatabaseServerMessenger.cs b/src/Umbraco.Web/BatchedDatabaseServerMessenger.cs index 49f9592d1f..707df4339c 100644 --- a/src/Umbraco.Web/BatchedDatabaseServerMessenger.cs +++ b/src/Umbraco.Web/BatchedDatabaseServerMessenger.cs @@ -9,6 +9,7 @@ using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Sync; using Umbraco.Web.Routing; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; namespace Umbraco.Web { @@ -21,9 +22,9 @@ namespace Umbraco.Web public class BatchedDatabaseServerMessenger : DatabaseServerMessenger { public BatchedDatabaseServerMessenger( - IRuntimeState runtime, DatabaseContext dbContext, ILogger logger, ProfilingLogger proflog, + IRuntimeState runtime, IUmbracoDatabaseFactory databaseFactory, ILogger logger, ProfilingLogger proflog, bool enableDistCalls, DatabaseServerMessengerOptions options) - : base(runtime, dbContext, logger, proflog, enableDistCalls, options) + : base(runtime, databaseFactory, logger, proflog, enableDistCalls, options) { } // invoked by BatchedDatabaseServerMessengerStartup which is an ApplicationEventHandler @@ -34,7 +35,7 @@ namespace Umbraco.Web UmbracoModule.EndRequest += UmbracoModule_EndRequest; UmbracoModule.RouteAttempt += UmbracoModule_RouteAttempt; - if (DatabaseContext.CanConnect == false) + if (DatabaseFactory.CanConnect == false) { Logger.Warn( "Cannot connect to the database, distributed calls will not be enabled for this server."); diff --git a/src/Umbraco.Web/Current.cs b/src/Umbraco.Web/Current.cs index 43084bbe59..7356ecb53e 100644 --- a/src/Umbraco.Web/Current.cs +++ b/src/Umbraco.Web/Current.cs @@ -9,6 +9,7 @@ using Umbraco.Core.Events; using Umbraco.Core.Logging; using Umbraco.Core.Macros; using Umbraco.Core.Models.PublishedContent; +using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Migrations; using Umbraco.Core.Plugins; using Umbraco.Core.PropertyEditors; @@ -229,7 +230,7 @@ namespace Umbraco.Web public static ServiceContext Services => CoreCurrent.Services; - public static DatabaseContext DatabaseContext => CoreCurrent.DatabaseContext; + public static IUmbracoDatabaseFactory DatabaseFactory => CoreCurrent.DatabaseFactory; #endregion } diff --git a/src/Umbraco.Web/Editors/ContentController.cs b/src/Umbraco.Web/Editors/ContentController.cs index 110132e80e..d08e5d997f 100644 --- a/src/Umbraco.Web/Editors/ContentController.cs +++ b/src/Umbraco.Web/Editors/ContentController.cs @@ -175,7 +175,7 @@ namespace Umbraco.Web.Editors if (filter.IsNullOrWhiteSpace() == false) { //add the default text filter - queryFilter = DatabaseContext.Query() + queryFilter = DatabaseFactory.Query() .Where(x => x.Name.Contains(filter)); } diff --git a/src/Umbraco.Web/Editors/MediaController.cs b/src/Umbraco.Web/Editors/MediaController.cs index aa6cb7e360..d207344e61 100644 --- a/src/Umbraco.Web/Editors/MediaController.cs +++ b/src/Umbraco.Web/Editors/MediaController.cs @@ -166,7 +166,7 @@ namespace Umbraco.Web.Editors if (filter.IsNullOrWhiteSpace() == false) { //add the default text filter - queryFilter = DatabaseContext.Query() + queryFilter = DatabaseFactory.Query() .Where(x => x.Name.Contains(filter)); } diff --git a/src/Umbraco.Web/Install/InstallHelper.cs b/src/Umbraco.Web/Install/InstallHelper.cs index 6bd199a346..f6bc21e53f 100644 --- a/src/Umbraco.Web/Install/InstallHelper.cs +++ b/src/Umbraco.Web/Install/InstallHelper.cs @@ -9,6 +9,7 @@ using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.IO; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Web.Install.InstallSteps; using Umbraco.Web.Install.Models; @@ -121,7 +122,7 @@ namespace Umbraco.Web.Install { // we don't have DatabaseProvider anymore... doing it differently //dbProvider = ApplicationContext.Current.DatabaseContext.DatabaseProvider.ToString(); - dbProvider = GetDbProviderString(Current.DatabaseContext); + dbProvider = GetDbProviderString(Current.DatabaseFactory); } var check = new org.umbraco.update.CheckForUpgrade(); @@ -143,7 +144,7 @@ namespace Umbraco.Web.Install } } - internal static string GetDbProviderString(DatabaseContext context) + internal static string GetDbProviderString(IUmbracoDatabaseFactory factory) { var dbProvider = string.Empty; @@ -151,7 +152,7 @@ namespace Umbraco.Web.Install //dbProvider = ApplicationContext.Current.DatabaseContext.DatabaseProvider.ToString(); // // doing it differently - var syntax = context.SqlSyntax; + var syntax = factory.SqlSyntax; if (syntax is SqlCeSyntaxProvider) dbProvider = "SqlServerCE"; else if (syntax is MySqlSyntaxProvider) diff --git a/src/Umbraco.Web/Mvc/PluginController.cs b/src/Umbraco.Web/Mvc/PluginController.cs index 168210faa2..4a31c5af50 100644 --- a/src/Umbraco.Web/Mvc/PluginController.cs +++ b/src/Umbraco.Web/Mvc/PluginController.cs @@ -5,6 +5,7 @@ using LightInject; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Web.Security; using Umbraco.Web.WebApi; @@ -41,7 +42,7 @@ namespace Umbraco.Web.Mvc /// Gets or sets the database context. /// [Inject] - public DatabaseContext DatabaseContext { get; set; } + public IUmbracoDatabaseFactory DatabaseFactory { get; set; } /// /// Gets or sets the services context. diff --git a/src/Umbraco.Web/Mvc/UmbracoController.cs b/src/Umbraco.Web/Mvc/UmbracoController.cs index 226983c5e6..86ac0361e6 100644 --- a/src/Umbraco.Web/Mvc/UmbracoController.cs +++ b/src/Umbraco.Web/Mvc/UmbracoController.cs @@ -6,6 +6,7 @@ using Microsoft.Owin; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Web.Security; @@ -38,7 +39,7 @@ namespace Umbraco.Web.Mvc /// Gets or sets the database context. /// [Inject] - public DatabaseContext DatabaseContext { get; set; } + public IUmbracoDatabaseFactory DatabaseFactory { get; set; } /// /// Gets or sets the services context. diff --git a/src/Umbraco.Web/Scheduling/LogScrubber.cs b/src/Umbraco.Web/Scheduling/LogScrubber.cs index 65c7df101e..bf2b2f7364 100644 --- a/src/Umbraco.Web/Scheduling/LogScrubber.cs +++ b/src/Umbraco.Web/Scheduling/LogScrubber.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Umbraco.Core; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Core.Sync; @@ -16,16 +17,16 @@ namespace Umbraco.Web.Scheduling private readonly IUmbracoSettingsSection _settings; private readonly ILogger _logger; private readonly ProfilingLogger _proflog; - private readonly DatabaseContext _databaseContext; + private readonly IUmbracoDatabaseFactory _databaseFactory; public LogScrubber(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, - IRuntimeState runtime, IAuditService auditService, IUmbracoSettingsSection settings, DatabaseContext databaseContext, ILogger logger, ProfilingLogger proflog) + IRuntimeState runtime, IAuditService auditService, IUmbracoSettingsSection settings, IUmbracoDatabaseFactory databaseFactory, ILogger logger, ProfilingLogger proflog) : base(runner, delayMilliseconds, periodMilliseconds) { _runtime = runtime; _auditService = auditService; _settings = settings; - _databaseContext = databaseContext; + _databaseFactory = databaseFactory; _logger = logger; _proflog = proflog; } @@ -82,7 +83,7 @@ namespace Umbraco.Web.Scheduling } // running on a background task, requires a database scope - using (_databaseContext.CreateDatabaseScope()) + using (_databaseFactory.CreateScope()) using (_proflog.DebugDuration("Log scrubbing executing", "Log scrubbing complete")) { _auditService.CleanLogs(GetLogScrubbingMaximumAge(_settings)); diff --git a/src/Umbraco.Web/Scheduling/ScheduledPublishing.cs b/src/Umbraco.Web/Scheduling/ScheduledPublishing.cs index 6894e267d8..caad3835b6 100644 --- a/src/Umbraco.Web/Scheduling/ScheduledPublishing.cs +++ b/src/Umbraco.Web/Scheduling/ScheduledPublishing.cs @@ -4,6 +4,7 @@ using System.Threading; using System.Threading.Tasks; using Umbraco.Core; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Core.Sync; using Umbraco.Web.Mvc; @@ -14,17 +15,17 @@ namespace Umbraco.Web.Scheduling { private readonly IRuntimeState _runtime; private readonly IUserService _userService; - private readonly DatabaseContext _databaseContext; + private readonly IUmbracoDatabaseFactory _databaseFactory; private readonly ILogger _logger; private readonly ProfilingLogger _proflog; public ScheduledPublishing(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, - IRuntimeState runtime, IUserService userService, DatabaseContext databaseContext, ILogger logger, ProfilingLogger proflog) + IRuntimeState runtime, IUserService userService, IUmbracoDatabaseFactory databaseFactory, ILogger logger, ProfilingLogger proflog) : base(runner, delayMilliseconds, periodMilliseconds) { _runtime = runtime; _userService = userService; - _databaseContext = databaseContext; + _databaseFactory = databaseFactory; _logger = logger; _proflog = proflog; } @@ -84,7 +85,7 @@ namespace Umbraco.Web.Scheduling // running on a background task, requires a database scope // (GetAuthenticationHeaderValue uses UserService to load the current user, hence requires a database) - using (_databaseContext.CreateDatabaseScope()) + using (_databaseFactory.CreateScope()) { //pass custom the authorization header request.Headers.Authorization = AdminTokenAuthorizeAttribute.GetAuthenticationHeaderValue(_userService); diff --git a/src/Umbraco.Web/Scheduling/SchedulerComponent.cs b/src/Umbraco.Web/Scheduling/SchedulerComponent.cs index fb19591047..8916dae957 100644 --- a/src/Umbraco.Web/Scheduling/SchedulerComponent.cs +++ b/src/Umbraco.Web/Scheduling/SchedulerComponent.cs @@ -4,6 +4,7 @@ using Umbraco.Core; using Umbraco.Core.Components; using Umbraco.Core.Configuration; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Web.Routing; @@ -24,7 +25,7 @@ namespace Umbraco.Web.Scheduling private IAuditService _auditService; private ILogger _logger; private ProfilingLogger _proflog; - private DatabaseContext _databaseContext; + private IUmbracoDatabaseFactory _databaseFactory; private BackgroundTaskRunner _keepAliveRunner; private BackgroundTaskRunner _publishingRunner; @@ -35,12 +36,12 @@ namespace Umbraco.Web.Scheduling private object _locker = new object(); private IBackgroundTask[] _tasks; - public void Initialize(IRuntimeState runtime, IUserService userService, IAuditService auditService, DatabaseContext databaseContext, ILogger logger, ProfilingLogger proflog) + public void Initialize(IRuntimeState runtime, IUserService userService, IAuditService auditService, IUmbracoDatabaseFactory databaseFactory, ILogger logger, ProfilingLogger proflog) { _runtime = runtime; _userService = userService; _auditService = auditService; - _databaseContext = databaseContext; + _databaseFactory = databaseFactory; _logger = logger; _proflog = proflog; @@ -78,9 +79,9 @@ namespace Umbraco.Web.Scheduling var tasks = new List { new KeepAlive(_keepAliveRunner, 60000, 300000, _runtime, _logger, _proflog), - new ScheduledPublishing(_publishingRunner, 60000, 60000, _runtime, _userService, _databaseContext, _logger, _proflog), + new ScheduledPublishing(_publishingRunner, 60000, 60000, _runtime, _userService, _databaseFactory, _logger, _proflog), new ScheduledTasks(_tasksRunner, 60000, 60000, _runtime, settings, _logger, _proflog), - new LogScrubber(_scrubberRunner, 60000, LogScrubber.GetLogScrubbingInterval(settings, _logger), _runtime, _auditService, settings, _databaseContext, _logger, _proflog) + new LogScrubber(_scrubberRunner, 60000, LogScrubber.GetLogScrubbingInterval(settings, _logger), _runtime, _auditService, settings, _databaseFactory, _logger, _proflog) }; // ping/keepalive diff --git a/src/Umbraco.Web/Strategies/DatabaseServerRegistrarAndMessengerComponent.cs b/src/Umbraco.Web/Strategies/DatabaseServerRegistrarAndMessengerComponent.cs index fc6058f68c..ff5a34d6d8 100644 --- a/src/Umbraco.Web/Strategies/DatabaseServerRegistrarAndMessengerComponent.cs +++ b/src/Umbraco.Web/Strategies/DatabaseServerRegistrarAndMessengerComponent.cs @@ -8,6 +8,7 @@ using Umbraco.Core; using Umbraco.Core.Components; using Umbraco.Core.Configuration; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Core.Services.Changes; using Umbraco.Core.Sync; @@ -39,7 +40,7 @@ namespace Umbraco.Web.Strategies private BackgroundTaskRunner _backgroundTaskRunner; private bool _started; private TouchServerTask _task; - private DatabaseContext _databaseContext; + private IUmbracoDatabaseFactory _databaseFactory; public override void Compose(Composition composition) { @@ -48,12 +49,12 @@ namespace Umbraco.Web.Strategies composition.SetServerMessenger(factory => { var runtime = factory.GetInstance(); - var databaseContext = factory.GetInstance(); + var databaseFactory = factory.GetInstance(); var logger = factory.GetInstance(); var proflog = factory.GetInstance(); return new BatchedDatabaseServerMessenger( - runtime, databaseContext, logger, proflog, + runtime, databaseFactory, logger, proflog, true, //Default options for web including the required callbacks to build caches new DatabaseServerMessengerOptions @@ -95,7 +96,7 @@ namespace Umbraco.Web.Strategies indexer.Value.RebuildIndex(); } - public void Initialize(IRuntimeState runtime, IServerRegistrar serverRegistrar, IServerRegistrationService registrationService, DatabaseContext databaseContext, ILogger logger) + public void Initialize(IRuntimeState runtime, IServerRegistrar serverRegistrar, IServerRegistrationService registrationService, IUmbracoDatabaseFactory databaseFactory, ILogger logger) { if (UmbracoConfig.For.UmbracoSettings().DistributedCall.Enabled) return; @@ -103,7 +104,7 @@ namespace Umbraco.Web.Strategies if (_registrar == null) throw new Exception("panic: registar."); _runtime = runtime; - _databaseContext = databaseContext; + _databaseFactory = databaseFactory; _logger = logger; _registrationService = registrationService; @@ -151,7 +152,7 @@ namespace Umbraco.Web.Strategies var task = new TouchServerTask(_backgroundTaskRunner, 15000, //delay before first execution _registrar.Options.RecurringSeconds*1000, //amount of ms between executions - svc, _registrar, serverAddress, _databaseContext, _logger); + svc, _registrar, serverAddress, _databaseFactory, _logger); // perform the rest async, we don't want to block the startup sequence // this will just reoccur on a background thread @@ -166,7 +167,7 @@ namespace Umbraco.Web.Strategies private readonly IServerRegistrationService _svc; private readonly DatabaseServerRegistrar _registrar; private readonly string _serverAddress; - private readonly DatabaseContext _databaseContext; + private readonly IUmbracoDatabaseFactory _databaseFactory; private readonly ILogger _logger; /// @@ -182,14 +183,14 @@ namespace Umbraco.Web.Strategies /// /// The task will repeat itself periodically. Use this constructor to create a new task. public TouchServerTask(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, - IServerRegistrationService svc, DatabaseServerRegistrar registrar, string serverAddress, DatabaseContext databaseContext, ILogger logger) + IServerRegistrationService svc, DatabaseServerRegistrar registrar, string serverAddress, IUmbracoDatabaseFactory databaseFactory, ILogger logger) : base(runner, delayMilliseconds, periodMilliseconds) { if (svc == null) throw new ArgumentNullException(nameof(svc)); _svc = svc; _registrar = registrar; _serverAddress = serverAddress; - _databaseContext = databaseContext; + _databaseFactory = databaseFactory; _logger = logger; } @@ -206,7 +207,7 @@ namespace Umbraco.Web.Strategies try { // running on a background task, requires a database scope - using (_databaseContext.CreateDatabaseScope()) + using (_databaseFactory.CreateScope()) { _svc.TouchServer(_serverAddress, _svc.CurrentServerIdentity, _registrar.Options.StaleServerTimeout); } diff --git a/src/Umbraco.Web/UI/Controls/InsertMacroSplitButton.cs b/src/Umbraco.Web/UI/Controls/InsertMacroSplitButton.cs index 13fa0f6a32..a647a4cdd4 100644 --- a/src/Umbraco.Web/UI/Controls/InsertMacroSplitButton.cs +++ b/src/Umbraco.Web/UI/Controls/InsertMacroSplitButton.cs @@ -138,7 +138,7 @@ namespace Umbraco.Web.UI.Controls private bool DoesMacroHaveParameters(int macroId) { - return DatabaseContext.Database.ExecuteScalar(string.Format("SELECT COUNT(*) from cmsMacroProperty where macro = {0}", macroId)) > 0; + return DatabaseFactory.Database.ExecuteScalar(string.Format("SELECT COUNT(*) from cmsMacroProperty where macro = {0}", macroId)) > 0; } } } diff --git a/src/Umbraco.Web/UI/Controls/UmbracoControl.cs b/src/Umbraco.Web/UI/Controls/UmbracoControl.cs index 1e51bafb83..9ebd67ae98 100644 --- a/src/Umbraco.Web/UI/Controls/UmbracoControl.cs +++ b/src/Umbraco.Web/UI/Controls/UmbracoControl.cs @@ -6,6 +6,7 @@ using System.Web.UI; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; using Umbraco.Core.Services; namespace Umbraco.Web.UI.Controls @@ -26,7 +27,7 @@ namespace Umbraco.Web.UI.Controls // fixme inject somehow Logger = Current.Logger; ProfilingLogger = Current.ProfilingLogger; - DatabaseContext = Current.DatabaseContext; + DatabaseFactory = Current.DatabaseFactory; Services = Current.Services; } @@ -60,7 +61,7 @@ namespace Umbraco.Web.UI.Controls /// /// Gets the database context. /// - protected DatabaseContext DatabaseContext { get; } + protected IUmbracoDatabaseFactory DatabaseFactory { get; } /// /// Gets the services context. diff --git a/src/Umbraco.Web/UI/Controls/UmbracoUserControl.cs b/src/Umbraco.Web/UI/Controls/UmbracoUserControl.cs index 50f4659d70..6cda30c572 100644 --- a/src/Umbraco.Web/UI/Controls/UmbracoUserControl.cs +++ b/src/Umbraco.Web/UI/Controls/UmbracoUserControl.cs @@ -6,6 +6,7 @@ using System.Web.UI; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Web.Security; using Umbraco.Web.UI.Pages; @@ -36,7 +37,7 @@ namespace Umbraco.Web.UI.Controls // fixme inject somehow Logger = Current.Logger; ProfilingLogger = Current.ProfilingLogger; - DatabaseContext = Current.DatabaseContext; + DatabaseFactory = Current.DatabaseFactory; Services = Current.Services; } @@ -88,7 +89,7 @@ namespace Umbraco.Web.UI.Controls /// /// Gets the database context. /// - public DatabaseContext DatabaseContext { get; } + public IUmbracoDatabaseFactory DatabaseFactory { get; } /// /// Gets an instance of ClientTools for access to the pages client API. diff --git a/src/Umbraco.Web/UI/Pages/BasePage.cs b/src/Umbraco.Web/UI/Pages/BasePage.cs index ecb4abda66..2a46e1f11e 100644 --- a/src/Umbraco.Web/UI/Pages/BasePage.cs +++ b/src/Umbraco.Web/UI/Pages/BasePage.cs @@ -8,6 +8,7 @@ using Umbraco.Core.Logging; using Umbraco.Core.Services; using Umbraco.Web.Security; using System.Web.UI; +using Umbraco.Core.Persistence; namespace Umbraco.Web.UI.Pages { @@ -63,7 +64,7 @@ namespace Umbraco.Web.UI.Pages /// /// Gets the database context. /// - public DatabaseContext DatabaseContext => Current.DatabaseContext; + public IUmbracoDatabaseFactory DatabaseFactory => Current.DatabaseFactory; /// /// Gets an instance of ClientTools for access to the pages client API. diff --git a/src/Umbraco.Web/UmbracoModule.cs b/src/Umbraco.Web/UmbracoModule.cs index e0371867d1..0b34ad4bc6 100644 --- a/src/Umbraco.Web/UmbracoModule.cs +++ b/src/Umbraco.Web/UmbracoModule.cs @@ -13,6 +13,7 @@ using Umbraco.Web.Routing; using Umbraco.Web.Security; using Umbraco.Core.Collections; using Umbraco.Core.Exceptions; +using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Web.PublishedCache; using GlobalSettings = Umbraco.Core.Configuration.GlobalSettings; @@ -55,7 +56,7 @@ namespace Umbraco.Web internal FacadeRouter FacadeRouter { get; set; } [Inject] - internal DatabaseContext DatabaseContext { get; set; } + internal IUmbracoDatabaseFactory DatabaseFactory { get; set; } #endregion @@ -85,7 +86,7 @@ namespace Umbraco.Web // process // create the database scope which will be disposed with http context - var scope = DatabaseContext.CreateDatabaseScope(); + var scope = DatabaseFactory.CreateScope(); // create the LegacyRequestInitializer // and initialize legacy stuff diff --git a/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs b/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs index fd0770f6f7..98b38e5f47 100644 --- a/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs +++ b/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs @@ -6,6 +6,7 @@ using Microsoft.Owin; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Web.Security; @@ -39,7 +40,7 @@ namespace Umbraco.Web.WebApi /// Gets or sets the database context. /// [Inject] - public DatabaseContext DatabaseContext { get; set; } + public IUmbracoDatabaseFactory DatabaseFactory { get; set; } /// /// Gets or sets the services context. diff --git a/src/Umbraco.Web/WebServices/UmbracoHttpHandler.cs b/src/Umbraco.Web/WebServices/UmbracoHttpHandler.cs index 92bfc8fa74..dd5d6f05a2 100644 --- a/src/Umbraco.Web/WebServices/UmbracoHttpHandler.cs +++ b/src/Umbraco.Web/WebServices/UmbracoHttpHandler.cs @@ -5,6 +5,7 @@ using System.Web.Routing; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Web.Security; @@ -27,7 +28,7 @@ namespace Umbraco.Web.WebServices // fixme inject somehow Logger = Current.Logger; ProfilingLogger = Current.ProfilingLogger; - DatabaseContext = Current.DatabaseContext; + DatabaseFactory = Current.DatabaseFactory; Services = Current.Services; } @@ -63,7 +64,7 @@ namespace Umbraco.Web.WebServices /// /// Gets the database context. /// - public DatabaseContext DatabaseContext { get; } + public IUmbracoDatabaseFactory DatabaseFactory { get; } /// /// Gets the web security helper. diff --git a/src/Umbraco.Web/WebServices/UmbracoWebService.cs b/src/Umbraco.Web/WebServices/UmbracoWebService.cs index fe9b43ebb8..e605e63e72 100644 --- a/src/Umbraco.Web/WebServices/UmbracoWebService.cs +++ b/src/Umbraco.Web/WebServices/UmbracoWebService.cs @@ -6,6 +6,7 @@ using System.Web.Services; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Web.Security; @@ -31,7 +32,7 @@ namespace Umbraco.Web.WebServices // fixme inject somehow Logger = Current.Logger; ProfilingLogger = Current.ProfilingLogger; - DatabaseContext = Current.DatabaseContext; + DatabaseFactory = Current.DatabaseFactory; Services = Current.Services; } @@ -63,7 +64,7 @@ namespace Umbraco.Web.WebServices /// /// Gets the database context. /// - public DatabaseContext DatabaseContext { get; } + public IUmbracoDatabaseFactory DatabaseFactory { get; } /// /// Gets the web security helper. diff --git a/src/Umbraco.Web/umbraco.presentation/library.cs b/src/Umbraco.Web/umbraco.presentation/library.cs index 3dc29c9c12..7e93ac1020 100644 --- a/src/Umbraco.Web/umbraco.presentation/library.cs +++ b/src/Umbraco.Web/umbraco.presentation/library.cs @@ -1106,7 +1106,7 @@ namespace umbraco XmlDocument xd = new XmlDocument(); xd.LoadXml(""); - foreach (var dr in Current.DatabaseContext.Database.Query( + foreach (var dr in Current.DatabaseFactory.Database.Query( "Select id, [value] from cmsDataTypeprevalues where DataTypeNodeId = @dataTypeId order by sortorder", new { dataTypeId = DataTypeId })) { @@ -1128,7 +1128,7 @@ namespace umbraco { try { - return Current.DatabaseContext.Database.ExecuteScalar( + return Current.DatabaseFactory.Database.ExecuteScalar( "select [value] from cmsDataTypePreValues where id = @id", new {id = Id}); } diff --git a/src/Umbraco.Web/umbraco.presentation/template.cs b/src/Umbraco.Web/umbraco.presentation/template.cs index 855762aae3..d09d8911d6 100644 --- a/src/Umbraco.Web/umbraco.presentation/template.cs +++ b/src/Umbraco.Web/umbraco.presentation/template.cs @@ -475,7 +475,7 @@ namespace umbraco var t = Current.ApplicationCache.RuntimeCache.GetCacheItem