Fix UmbracoDatabaseFactory
This commit is contained in:
@@ -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.");
|
||||
|
||||
Reference in New Issue
Block a user