diff --git a/src/Umbraco.Core/Persistence/Migrations/Initial/BaseDataCreation.cs b/src/Umbraco.Core/Persistence/Migrations/Initial/BaseDataCreation.cs index dd0d237769..796f2b0b6e 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Initial/BaseDataCreation.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Initial/BaseDataCreation.cs @@ -141,7 +141,7 @@ namespace Umbraco.Core.Persistence.Migrations.Initial private void CreateUmbracoUserData() { _database.Insert("umbracoUser", "id", false, new UserDto { Id = 0, Disabled = false, NoConsole = false, Type = 1, ContentStartId = -1, MediaStartId = -1, UserName = "Administrator", Login = "admin", Password = "default", Email = "", UserLanguage = "en", DefaultPermissions = null, DefaultToLiveEditing = false }); - _database.Update("SET id = @IdAfter WHERE id = @IdBefore AND userLogin = @Login", new { IdAfter = 0, IdBefore = 1, Login = "admin" }); + //_database.Update("SET id = @IdAfter WHERE id = @IdBefore AND userLogin = @Login", new { IdAfter = 0, IdBefore = 1, Login = "admin" }); } private void CreateUmbracoUserTypeData() diff --git a/src/Umbraco.Core/Persistence/PetaPocoExtensions.cs b/src/Umbraco.Core/Persistence/PetaPocoExtensions.cs index fba115a508..8243e47de5 100644 --- a/src/Umbraco.Core/Persistence/PetaPocoExtensions.cs +++ b/src/Umbraco.Core/Persistence/PetaPocoExtensions.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using Umbraco.Core.Logging; +using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.Migrations.Initial; using Umbraco.Core.Persistence.SqlSyntax; @@ -73,6 +74,12 @@ namespace Umbraco.Core.Persistence //Turn off identity insert if db provider is not mysql if (SyntaxConfig.SqlSyntaxProvider.SupportsIdentityInsert() && tableDefinition.Columns.Any(x => x.IsIdentity)) db.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF;", SyntaxConfig.SqlSyntaxProvider.GetQuotedTableName(tableName)))); + + //Special case for MySql + if (ApplicationContext.Current.DatabaseContext.ProviderName.Contains("MySql")) + { + db.Update("SET id = @IdAfter WHERE id = @IdBefore AND userLogin = @Login", new { IdAfter = 0, IdBefore = 1, Login = "admin" }); + } } //Loop through foreignkey statements and execute sql diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs index efdafa91d8..90c80f2f63 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs @@ -113,16 +113,16 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") .From("cmsDocument") - .InnerJoin("cmsContentVersion").On("[cmsDocument].[versionId] = [cmsContentVersion].[VersionId]") - .InnerJoin("cmsContent").On("[cmsContentVersion].[ContentId] = [cmsContent].[nodeId]") - .InnerJoin("umbracoNode").On("[cmsContent].[nodeId] = [umbracoNode].[id]") - .Where("[umbracoNode].[nodeObjectType] = @NodeObjectType", new { NodeObjectType = NodeObjectTypeId }); + .InnerJoin("cmsContentVersion").On("cmsDocument.versionId = cmsContentVersion.VersionId") + .InnerJoin("cmsContent").On("cmsContentVersion.ContentId = cmsContent.nodeId") + .InnerJoin("umbracoNode").On("cmsContent.nodeId = umbracoNode.id") + .Where("umbracoNode.nodeObjectType = @NodeObjectType", new { NodeObjectType = NodeObjectTypeId }); return sql; } protected override string GetBaseWhereClause() { - return "[umbracoNode].[id] = @Id"; + return "umbracoNode.id = @Id"; } protected override IEnumerable GetDeleteClauses() @@ -408,7 +408,7 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = GetBaseQuery(false); sql.Where(GetBaseWhereClause(), new { Id = id }); - sql.Where("[cmsContentVersion].[LanguageLocale] = @Language", new { Language = language }); + sql.Where("cmsContentVersion.LanguageLocale = @Language", new { Language = language }); sql.OrderByDescending(x => x.VersionDate); var dto = Database.Query(sql).FirstOrDefault(); @@ -426,9 +426,9 @@ namespace Umbraco.Core.Persistence.Repositories var propertySql = new Sql(); propertySql.Select("*"); propertySql.From("cmsPropertyData"); - propertySql.InnerJoin("cmsPropertyType ON ([cmsPropertyData].[propertytypeid] = [cmsPropertyType].[id])"); - propertySql.Where("[cmsPropertyData].[contentNodeId] = @Id", new { Id = id }); - propertySql.Where("[cmsPropertyData].[versionId] = @VersionId", new { VersionId = versionId }); + propertySql.InnerJoin("cmsPropertyType ON (cmsPropertyData.propertytypeid = cmsPropertyType.id)"); + propertySql.Where("cmsPropertyData.contentNodeId = @Id", new { Id = id }); + propertySql.Where("cmsPropertyData.versionId = @VersionId", new { VersionId = versionId }); var propertyDataDtos = Database.Fetch(propertySql); var propertyFactory = new PropertyFactory(contentType, versionId, id); diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs index 0f7918b680..04abea1820 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs @@ -37,8 +37,8 @@ namespace Umbraco.Core.Persistence.Repositories var sqlClause = new Sql(); sqlClause.Select("*"); sqlClause.From("cmsPropertyTypeGroup"); - sqlClause.RightJoin("cmsPropertyType ON [cmsPropertyTypeGroup].[id] = [cmsPropertyType].[propertyTypeGroupId]"); - sqlClause.InnerJoin("cmsDataType ON [cmsPropertyType].[dataTypeId] = [cmsDataType].[nodeId]"); + sqlClause.RightJoin("cmsPropertyType ON cmsPropertyTypeGroup.id = cmsPropertyType.propertyTypeGroupId"); + sqlClause.InnerJoin("cmsDataType ON cmsPropertyType.dataTypeId = cmsDataType.nodeId"); var translator = new SqlTranslator(sqlClause, query); var sql = translator.Translate(); @@ -213,7 +213,7 @@ namespace Umbraco.Core.Persistence.Repositories var allowedContentTypesSql = new Sql(); allowedContentTypesSql.Select("*"); allowedContentTypesSql.From("cmsContentTypeAllowedContentType"); - allowedContentTypesSql.Where("[cmsContentTypeAllowedContentType].[Id] = @Id", new { Id = id }); + allowedContentTypesSql.Where("cmsContentTypeAllowedContentType.Id = @Id", new { Id = id }); var allowedContentTypeDtos = Database.Fetch(allowedContentTypesSql); return allowedContentTypeDtos.Select(x => new ContentTypeSort { Id = new Lazy(() => x.AllowedId), SortOrder = x.SortOrder }).ToList(); @@ -224,9 +224,9 @@ namespace Umbraco.Core.Persistence.Repositories var propertySql = new Sql(); propertySql.Select("*"); propertySql.From("cmsPropertyTypeGroup"); - propertySql.RightJoin("cmsPropertyType ON [cmsPropertyTypeGroup].[id] = [cmsPropertyType].[propertyTypeGroupId]"); - propertySql.InnerJoin("cmsDataType ON [cmsPropertyType].[dataTypeId] = [cmsDataType].[nodeId]"); - propertySql.Where("[cmsPropertyType].[contentTypeId] = @Id", new { Id = id }); + propertySql.RightJoin("cmsPropertyType ON cmsPropertyTypeGroup.id = cmsPropertyType.propertyTypeGroupId"); + propertySql.InnerJoin("cmsDataType ON cmsPropertyType.dataTypeId = cmsDataType.nodeId"); + propertySql.Where("cmsPropertyType.contentTypeId = @Id", new { Id = id }); var dtos = Database.Fetch(new GroupPropertyTypeRelator().Map, propertySql); diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs index 2984b5a43d..bb73c7c7d3 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs @@ -118,16 +118,16 @@ namespace Umbraco.Core.Persistence.Repositories //TODO Investigate the proper usage of IsDefault on cmsDocumentType sql.Select(isCount ? "COUNT(*)" : "*"); sql.From("cmsDocumentType"); - sql.RightJoin("cmsContentType ON ([cmsContentType].[nodeId] = [cmsDocumentType].[contentTypeNodeId])"); - sql.InnerJoin("umbracoNode ON ([cmsContentType].[nodeId] = [umbracoNode].[id])"); - sql.Where("[umbracoNode].[nodeObjectType] = @NodeObjectType", new { NodeObjectType = NodeObjectTypeId }); - sql.Where("[cmsDocumentType].[IsDefault] = @IsDefault", new { IsDefault = true }); + sql.RightJoin("cmsContentType ON (cmsContentType.nodeId = cmsDocumentType.contentTypeNodeId)"); + sql.InnerJoin("umbracoNode ON (cmsContentType.nodeId = umbracoNode.id)"); + sql.Where("umbracoNode.nodeObjectType = @NodeObjectType", new { NodeObjectType = NodeObjectTypeId }); + sql.Where("cmsDocumentType.IsDefault = @IsDefault", new { IsDefault = true }); return sql; } protected override string GetBaseWhereClause() { - return "[umbracoNode].[id] = @Id"; + return "umbracoNode.id = @Id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs index 5ef72413be..ff42b191a7 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs @@ -87,14 +87,14 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*"); sql.From("cmsDataType"); - sql.InnerJoin("umbracoNode ON ([cmsDataType].[nodeId] = [umbracoNode].[id])"); - sql.Where("[umbracoNode].[nodeObjectType] = @NodeObjectType", new { NodeObjectType = NodeObjectTypeId }); + sql.InnerJoin("umbracoNode ON (cmsDataType.nodeId = umbracoNode.id)"); + sql.Where("umbracoNode.nodeObjectType = @NodeObjectType", new { NodeObjectType = NodeObjectTypeId }); return sql; } protected override string GetBaseWhereClause() { - return "[umbracoNode].[id] = @Id"; + return "umbracoNode.id = @Id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs index 1daf2cf2fe..499b79c918 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs @@ -108,14 +108,14 @@ namespace Umbraco.Core.Persistence.Repositories { sql.Select("*"); sql.From("cmsDictionary"); - sql.InnerJoin("cmsLanguageText ON ([cmsDictionary].[id] = [cmsLanguageText].[UniqueId])"); + sql.InnerJoin("cmsLanguageText ON (cmsDictionary.id = cmsLanguageText.UniqueId)"); } return sql; } protected override string GetBaseWhereClause() { - return "[cmsDictionary].[pk] = @Id"; + return "cmsDictionary.pk = @Id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs b/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs index c215d08580..77448817be 100644 --- a/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs @@ -92,7 +92,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override string GetBaseWhereClause() { - return "[umbracoLanguage].[id] = @Id"; + return "umbracoLanguage.id = @Id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs index 288ccd43e5..70726b7671 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs @@ -97,15 +97,15 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*"); sql.From("cmsContentVersion"); - sql.InnerJoin("cmsContent ON ([cmsContentVersion].[ContentId] = [cmsContent].[nodeId])"); - sql.InnerJoin("umbracoNode ON ([cmsContent].[nodeId] = [umbracoNode].[id])"); - sql.Where("[umbracoNode].[nodeObjectType] = @NodeObjectType", new { NodeObjectType = NodeObjectTypeId }); + sql.InnerJoin("cmsContent ON (cmsContentVersion.ContentId = cmsContent.nodeId)"); + sql.InnerJoin("umbracoNode ON (cmsContent.nodeId = umbracoNode.id)"); + sql.Where("umbracoNode.nodeObjectType = @NodeObjectType", new { NodeObjectType = NodeObjectTypeId }); return sql; } protected override string GetBaseWhereClause() { - return "[umbracoNode].[id] = @Id"; + return "umbracoNode.id = @Id"; } protected override IEnumerable GetDeleteClauses() @@ -294,9 +294,9 @@ namespace Umbraco.Core.Persistence.Repositories var propertySql = new Sql(); propertySql.Select("*"); propertySql.From("cmsPropertyData"); - propertySql.InnerJoin("cmsPropertyType ON ([cmsPropertyData].[propertytypeid] = [cmsPropertyType].[id])"); - propertySql.Where("[cmsPropertyData].[contentNodeId] = @Id", new { Id = id }); - propertySql.Where("[cmsPropertyData].[versionId] = @VersionId", new { VersionId = versionId }); + propertySql.InnerJoin("cmsPropertyType ON (cmsPropertyData.propertytypeid = cmsPropertyType.id)"); + propertySql.Where("cmsPropertyData.contentNodeId = @Id", new { Id = id }); + propertySql.Where("cmsPropertyData.versionId = @VersionId", new { VersionId = versionId }); var propertyDataDtos = Database.Fetch(propertySql); var propertyFactory = new PropertyFactory(contentType, versionId, id); diff --git a/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs index 50477a679e..51705e1adf 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs @@ -106,14 +106,14 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*"); sql.From("cmsContentType"); - sql.InnerJoin("umbracoNode ON ([cmsContentType].[nodeId] = [umbracoNode].[id])"); - sql.Where("[umbracoNode].[nodeObjectType] = @NodeObjectType", new { NodeObjectType = NodeObjectTypeId }); + sql.InnerJoin("umbracoNode ON (cmsContentType.nodeId = umbracoNode.id)"); + sql.Where("umbracoNode.nodeObjectType = @NodeObjectType", new { NodeObjectType = NodeObjectTypeId }); return sql; } protected override string GetBaseWhereClause() { - return "[umbracoNode].[id] = @Id"; + return "umbracoNode.id = @Id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/RelationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/RelationRepository.cs index 89f5510708..ec42e6dee2 100644 --- a/src/Umbraco.Core/Persistence/Repositories/RelationRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/RelationRepository.cs @@ -100,7 +100,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override string GetBaseWhereClause() { - return "[umbracoRelation].[id] = @Id"; + return "umbracoRelation.id = @Id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/RelationTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/RelationTypeRepository.cs index e30e992861..bebfb7311b 100644 --- a/src/Umbraco.Core/Persistence/Repositories/RelationTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/RelationTypeRepository.cs @@ -91,7 +91,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override string GetBaseWhereClause() { - return "[umbracoRelationType].[id] = @Id"; + return "umbracoRelationType.id = @Id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs index fb8307d940..47d2b60c95 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs @@ -132,14 +132,14 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*"); sql.From("cmsTemplate"); - sql.InnerJoin("umbracoNode").On("[cmsTemplate].[nodeId] = [umbracoNode].[id]"); - sql.Where("[umbracoNode].[nodeObjectType] = @NodeObjectType", new { NodeObjectType = NodeObjectTypeId }); + sql.InnerJoin("umbracoNode").On("cmsTemplate.nodeId = umbracoNode.id"); + sql.Where("umbracoNode.nodeObjectType = @NodeObjectType", new { NodeObjectType = NodeObjectTypeId }); return sql; } protected override string GetBaseWhereClause() { - return "[umbracoNode].[id] = @Id"; + return "umbracoNode.id = @Id"; } protected override IEnumerable GetDeleteClauses() @@ -317,7 +317,7 @@ namespace Umbraco.Core.Persistence.Repositories public ITemplate Get(string alias) { var sql = GetBaseQuery(false); - sql.Where("[cmsTemplate].[alias] = @Alias", new { Alias = alias }); + sql.Where("cmsTemplate.alias = @Alias", new { Alias = alias }); var dto = Database.Fetch(sql).FirstOrDefault(); diff --git a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs index bfe896e6b5..383394ae60 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs @@ -95,7 +95,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override string GetBaseWhereClause() { - return "[umbracoUser].[id] = @Id"; + return "umbracoUser.id = @Id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs index 3618ef89b0..98e3fc4e7e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs @@ -90,7 +90,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override string GetBaseWhereClause() { - return "[umbracoUserType].[id] = @Id"; + return "umbracoUserType.id = @Id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs b/src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs index 2f03003899..541100ae4d 100644 --- a/src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs +++ b/src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs @@ -95,7 +95,9 @@ namespace Umbraco.Core.Persistence.SqlSyntax { string columns = string.IsNullOrEmpty(columnDefinition.PrimaryKeyColumns) ? GetQuotedColumnName(columnDefinition.Name) - : columnDefinition.PrimaryKeyColumns; + : string.Join(", ", columnDefinition.PrimaryKeyColumns + .Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries) + .Select(GetQuotedColumnName)); primaryKey = string.Format(", \nPRIMARY KEY {0} ({1})", columnDefinition.IsIndexed ? "CLUSTERED" : "NONCLUSTERED", columns); } diff --git a/src/Umbraco.Core/Persistence/SqlSyntax/SqlCeSyntaxProvider.cs b/src/Umbraco.Core/Persistence/SqlSyntax/SqlCeSyntaxProvider.cs index a4f2a9d7ce..28383a666e 100644 --- a/src/Umbraco.Core/Persistence/SqlSyntax/SqlCeSyntaxProvider.cs +++ b/src/Umbraco.Core/Persistence/SqlSyntax/SqlCeSyntaxProvider.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System; +using System.Linq; using System.Text; using Umbraco.Core.Persistence.DatabaseAnnotations; using Umbraco.Core.Persistence.DatabaseModelDefinitions; @@ -100,7 +101,9 @@ namespace Umbraco.Core.Persistence.SqlSyntax string columns = string.IsNullOrEmpty(columnDefinition.PrimaryKeyColumns) ? GetQuotedColumnName(columnDefinition.Name) - : columnDefinition.PrimaryKeyColumns; + : string.Join(", ", columnDefinition.PrimaryKeyColumns + .Split(new[]{',', ' '}, StringSplitOptions.RemoveEmptyEntries) + .Select(GetQuotedColumnName)); return string.Format(CreateConstraint, GetQuotedTableName(table.Name), diff --git a/src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderBase.cs b/src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderBase.cs index e2e6cb3e9f..65cc4401d6 100644 --- a/src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderBase.cs +++ b/src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderBase.cs @@ -249,7 +249,9 @@ namespace Umbraco.Core.Persistence.SqlSyntax string columns = string.IsNullOrEmpty(columnDefinition.PrimaryKeyColumns) ? GetQuotedColumnName(columnDefinition.Name) - : columnDefinition.PrimaryKeyColumns; + : string.Join(", ", columnDefinition.PrimaryKeyColumns + .Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries) + .Select(GetQuotedColumnName)); string primaryKeyPart = string.Concat("PRIMARY KEY", columnDefinition.IsIndexed ? " CLUSTERED" : " NONCLUSTERED"); diff --git a/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs b/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs index 1cd04b024e..d2dadc6879 100644 --- a/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs +++ b/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs @@ -53,7 +53,7 @@ namespace Umbraco.Tests.Persistence //assign the service context new ServiceContext(new PetaPocoUnitOfWorkProvider(), new FileUnitOfWorkProvider(), new PublishingStrategy())) { IsReady = true }; - SyntaxConfig.SqlSyntaxProvider = SqlCeSyntaxProvider.Instance; + SyntaxConfig.SqlSyntaxProvider = SqlCeSyntax.Provider; _database = new Database("Datasource=|DataDirectory|test.sdf", "System.Data.SqlServerCe.4.0"); diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs index f21b02e14a..706781c12f 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs @@ -10,6 +10,7 @@ using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.ObjectResolution; using Umbraco.Core.Persistence; +using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Core.Publishing; using Umbraco.Core.Services; @@ -76,8 +77,10 @@ namespace Umbraco.Tests.TestHelpers { DatabaseContext.Database.Dispose(); //reset the app context - ApplicationContext.ApplicationCache.ClearAllCache(); - + ApplicationContext.ApplicationCache.ClearAllCache(); + + SyntaxConfig.SqlSyntaxProvider = null; + //legacy API database connection close SqlCeContextGuardian.CloseBackgroundConnection();