From d922b0dc903e7c457dda06e1f10bd5d4c78adca9 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Mon, 14 Jan 2013 15:06:23 -0100 Subject: [PATCH] Fixes U4-1463 Unable to create an ISqlHelper from another connectionstring since --- src/Umbraco.Tests/BusinessLogic/BaseTest.cs | 4 ++-- src/Umbraco.Tests/TestHelpers/TestHelper.cs | 4 ++-- .../install/steps/database.ascx.cs | 3 ++- src/umbraco.businesslogic/Application.cs | 2 +- src/umbraco.businesslogic/ApplicationRegistrar.cs | 2 +- src/umbraco.businesslogic/GlobalSettings.cs | 2 +- .../datatype/DataEditorSettingsStorage.cs | 4 ++-- src/umbraco.datalayer/DataLayerHelper.cs | 15 ++++++++++----- 8 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Tests/BusinessLogic/BaseTest.cs b/src/Umbraco.Tests/BusinessLogic/BaseTest.cs index e69fd7f3dd..06c62a9de2 100644 --- a/src/Umbraco.Tests/BusinessLogic/BaseTest.cs +++ b/src/Umbraco.Tests/BusinessLogic/BaseTest.cs @@ -39,7 +39,7 @@ namespace Umbraco.Tests.BusinessLogic private void ClearDatabase() { var databaseSettings = ConfigurationManager.ConnectionStrings[Core.Configuration.GlobalSettings.UmbracoConnectionName]; - var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString) as SqlCEHelper; + var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString, false) as SqlCEHelper; if (dataHelper == null) throw new InvalidOperationException("The sql helper for unit tests must be of type SqlCEHelper, check the ensure the connection string used for this test is set to use SQLCE"); @@ -57,7 +57,7 @@ namespace Umbraco.Tests.BusinessLogic AppDomain.CurrentDomain.SetData("DataDirectory", TestHelper.CurrentAssemblyDirectory); var databaseSettings = ConfigurationManager.ConnectionStrings[Core.Configuration.GlobalSettings.UmbracoConnectionName]; - var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString) as SqlCEHelper; + var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString, false) as SqlCEHelper; var installer = dataHelper.Utility.CreateInstaller(); if (installer.CanConnect) diff --git a/src/Umbraco.Tests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests/TestHelpers/TestHelper.cs index 20e23f2084..819ccdb68b 100644 --- a/src/Umbraco.Tests/TestHelpers/TestHelper.cs +++ b/src/Umbraco.Tests/TestHelpers/TestHelper.cs @@ -23,7 +23,7 @@ namespace Umbraco.Tests.TestHelpers public static void ClearDatabase() { var databaseSettings = ConfigurationManager.ConnectionStrings[Core.Configuration.GlobalSettings.UmbracoConnectionName]; - var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString) as SqlCEHelper; + var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString, false) as SqlCEHelper; if (dataHelper == null) throw new InvalidOperationException("The sql helper for unit tests must be of type SqlCEHelper, check the ensure the connection string used for this test is set to use SQLCE"); @@ -41,7 +41,7 @@ namespace Umbraco.Tests.TestHelpers ClearDatabase(); var databaseSettings = ConfigurationManager.ConnectionStrings[Core.Configuration.GlobalSettings.UmbracoConnectionName]; - var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString); + var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString, false); var installer = dataHelper.Utility.CreateInstaller(); if (installer.CanConnect) diff --git a/src/Umbraco.Web/umbraco.presentation/install/steps/database.ascx.cs b/src/Umbraco.Web/umbraco.presentation/install/steps/database.ascx.cs index 496b3dac04..d05f87af9a 100644 --- a/src/Umbraco.Web/umbraco.presentation/install/steps/database.ascx.cs +++ b/src/Umbraco.Web/umbraco.presentation/install/steps/database.ascx.cs @@ -6,6 +6,7 @@ using System.Web.UI.HtmlControls; using Umbraco.Core; using Umbraco.Core.Logging; using System.IO; +using Umbraco.Core.Persistence; using umbraco.DataLayer; using umbraco.IO; @@ -85,7 +86,7 @@ namespace umbraco.presentation.install.steps var databaseSettings = ConfigurationManager.ConnectionStrings[Umbraco.Core.Configuration.GlobalSettings.UmbracoConnectionName]; if (databaseSettings != null) { - var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString); + var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString, false); connectionStringBuilder.ConnectionString = dataHelper.ConnectionString; // Prepare data layer type diff --git a/src/umbraco.businesslogic/Application.cs b/src/umbraco.businesslogic/Application.cs index be8d17dcc6..340f10c814 100644 --- a/src/umbraco.businesslogic/Application.cs +++ b/src/umbraco.businesslogic/Application.cs @@ -94,7 +94,7 @@ namespace umbraco.BusinessLogic ConfigurationManager.AppSettings.ContainsKey(umbracoDsn)) connectionString = ConfigurationManager.AppSettings[umbracoDsn]; - _sqlHelper = DataLayerHelper.CreateSqlHelper(connectionString); + _sqlHelper = DataLayerHelper.CreateSqlHelper(connectionString, false); } catch(Exception ex) { diff --git a/src/umbraco.businesslogic/ApplicationRegistrar.cs b/src/umbraco.businesslogic/ApplicationRegistrar.cs index b643427406..8eb695eebb 100644 --- a/src/umbraco.businesslogic/ApplicationRegistrar.cs +++ b/src/umbraco.businesslogic/ApplicationRegistrar.cs @@ -24,7 +24,7 @@ namespace umbraco.BusinessLogic try { var databaseSettings = ConfigurationManager.ConnectionStrings[Umbraco.Core.Configuration.GlobalSettings.UmbracoConnectionName]; - _sqlHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString); + _sqlHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString, false); } catch { } } diff --git a/src/umbraco.businesslogic/GlobalSettings.cs b/src/umbraco.businesslogic/GlobalSettings.cs index 9c89ca4099..dd77f843b1 100644 --- a/src/umbraco.businesslogic/GlobalSettings.cs +++ b/src/umbraco.businesslogic/GlobalSettings.cs @@ -387,7 +387,7 @@ namespace umbraco get { var databaseSettings = ConfigurationManager.ConnectionStrings[Umbraco.Core.Configuration.GlobalSettings.UmbracoConnectionName]; - var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString); + var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString, false); if (HttpContext.Current != null) { diff --git a/src/umbraco.cms/businesslogic/datatype/DataEditorSettingsStorage.cs b/src/umbraco.cms/businesslogic/datatype/DataEditorSettingsStorage.cs index 88bc00521d..85e8cd2e3c 100644 --- a/src/umbraco.cms/businesslogic/datatype/DataEditorSettingsStorage.cs +++ b/src/umbraco.cms/businesslogic/datatype/DataEditorSettingsStorage.cs @@ -14,9 +14,9 @@ namespace umbraco.cms.businesslogic.datatype public DataEditorSettingsStorage() { var databaseSettings = ConfigurationManager.ConnectionStrings[Umbraco.Core.Configuration.GlobalSettings.UmbracoConnectionName]; - var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString); + var dataHelper = DataLayerHelper.CreateSqlHelper(databaseSettings.ConnectionString, false); - init(DataLayerHelper.CreateSqlHelper(dataHelper.ConnectionString)); + init(DataLayerHelper.CreateSqlHelper(dataHelper.ConnectionString, false)); } private void init(ISqlHelper connection) diff --git a/src/umbraco.datalayer/DataLayerHelper.cs b/src/umbraco.datalayer/DataLayerHelper.cs index 07a91901aa..d50aa5fc8a 100644 --- a/src/umbraco.datalayer/DataLayerHelper.cs +++ b/src/umbraco.datalayer/DataLayerHelper.cs @@ -41,12 +41,17 @@ namespace umbraco.DataLayer /// A new SQL helper. /// This method will change to allow the addition of external SQL helpers. public static ISqlHelper CreateSqlHelper(string connectionString) + { + return CreateSqlHelper(connectionString, true); + } + + public static ISqlHelper CreateSqlHelper(string connectionString, bool forceLegacyConnection) { /* check arguments */ if (string.IsNullOrEmpty(connectionString)) throw new ArgumentNullException("connectionString"); - if (IsEmbeddedDatabase(connectionString) && connectionString.ToLower().Contains("SQLCE4Umbraco".ToLower()) == false) + if (forceLegacyConnection == false && IsEmbeddedDatabase(connectionString) && connectionString.ToLower().Contains("SQLCE4Umbraco".ToLower()) == false) { // Input is : Datasource=|DataDirectory|Umbraco.sdf // Should be: datalayer=SQLCE4Umbraco.SqlCEHelper,SQLCE4Umbraco;data source=|DataDirectory|\Umbraco.sdf @@ -67,10 +72,10 @@ namespace umbraco.DataLayer throw new ArgumentException("Bad connection string.", "connectionString", ex); } - var databaseSettings = ConfigurationManager.ConnectionStrings[Umbraco.Core.Configuration.GlobalSettings.UmbracoConnectionName]; - - if (databaseSettings != null) - SetDataHelperNames(databaseSettings); + var connectionStringSettings = ConfigurationManager.ConnectionStrings[Umbraco.Core.Configuration.GlobalSettings.UmbracoConnectionName]; + + if (forceLegacyConnection == false && connectionStringSettings != null) + SetDataHelperNames(connectionStringSettings); else SetDataHelperNamesLegacyConnectionString(connectionStringBuilder);