Fix UmbracoDatabaseFactory

This commit is contained in:
Stephan
2019-02-20 15:52:21 +01:00
parent 50c9625cc6
commit 716fc582a0

View File

@@ -119,23 +119,9 @@ namespace Umbraco.Core.Persistence
}
/// <inheritdoc />
public bool CanConnect
{
get
{
if (!Configured || !DbConnectionExtensions.IsConnectionAvailable(_connectionString, _providerName)) return false;
public bool CanConnect => Configured && DbConnectionExtensions.IsConnectionAvailable(_connectionString, _providerName);
if (_serverVersionDetected) return true;
if (_databaseType.IsSqlServer())
DetectSqlServerVersion();
_serverVersionDetected = true;
return true;
}
}
private void DetectSqlServerVersion()
private DatabaseType DetectSqlServerVersion()
{
// replace NPoco database type by a more efficient one
@@ -152,22 +138,28 @@ namespace Umbraco.Core.Persistence
fromSettings = true;
}
DatabaseType databaseType;
switch (versionName)
{
case SqlServerSyntaxProvider.VersionName.V2008:
_databaseType = DatabaseType.SqlServer2008;
databaseType = DatabaseType.SqlServer2008;
break;
case SqlServerSyntaxProvider.VersionName.V2012:
case SqlServerSyntaxProvider.VersionName.V2014:
case SqlServerSyntaxProvider.VersionName.V2016:
case SqlServerSyntaxProvider.VersionName.V2017:
_databaseType = DatabaseType.SqlServer2012;
databaseType = DatabaseType.SqlServer2012;
break;
// else leave unchanged
default:
databaseType = _databaseType;
break;
}
_logger.Debug<UmbracoDatabaseFactory>("SqlServer {SqlServerVersion}, DatabaseType is {DatabaseType} ({Source}).",
versionName, _databaseType, fromSettings ? "settings" : "detected");
versionName, databaseType, fromSettings ? "settings" : "detected");
return databaseType;
}
/// <inheritdoc />
@@ -224,6 +216,9 @@ namespace Umbraco.Core.Persistence
if (_npocoDatabaseFactory == null) throw new NullReferenceException("The call to UmbracoDatabaseFactory.Config yielded a null UmbracoDatabaseFactory instance.");
if (_databaseType.IsSqlServer() && DbConnectionExtensions.IsConnectionAvailable(_connectionString, _providerName))
_databaseType = DetectSqlServerVersion();
SqlContext = new SqlContext(_sqlSyntax, _databaseType, _pocoDataFactory, _mappers);
_logger.Debug<UmbracoDatabaseFactory>("Configured.");