diff --git a/src/Umbraco.Core/Models/Rdbms/RedirectUrlDto.cs b/src/Umbraco.Core/Models/Rdbms/RedirectUrlDto.cs index b23c75aa4b..ed720e8bc1 100644 --- a/src/Umbraco.Core/Models/Rdbms/RedirectUrlDto.cs +++ b/src/Umbraco.Core/Models/Rdbms/RedirectUrlDto.cs @@ -5,7 +5,7 @@ using Umbraco.Core.Persistence.DatabaseAnnotations; namespace Umbraco.Core.Models.Rdbms { [TableName("umbracoRedirectUrl")] - [PrimaryKey("id")] + [PrimaryKey("id", autoIncrement = false)] [ExplicitColumns] class RedirectUrlDto { @@ -22,8 +22,8 @@ namespace Umbraco.Core.Models.Rdbms // inserts, and much faster on reads, so... we have an index on a hash. [Column("id")] - [PrimaryKeyColumn(IdentitySeed = 1, Name = "PK_umbracoRedirectUrl")] - public int Id { get; set; } + [PrimaryKeyColumn(Name = "PK_umbracoRedirectUrl", AutoIncrement = false)] + public Guid Id { get; set; } [ResultColumn] public int ContentId { get; set; } diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRedirectUrlRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRedirectUrlRepository.cs index 82f2e0e516..963128b7da 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRedirectUrlRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRedirectUrlRepository.cs @@ -7,7 +7,7 @@ namespace Umbraco.Core.Persistence.Repositories /// /// Defines the repository. /// - public interface IRedirectUrlRepository : IRepositoryQueryable + public interface IRedirectUrlRepository : IRepositoryQueryable { /// /// Gets a redirect url. @@ -21,7 +21,7 @@ namespace Umbraco.Core.Persistence.Repositories /// Deletes a redirect url. /// /// The redirect url identifier. - void Delete(int id); + void Delete(Guid id); /// /// Deletes all redirect urls. diff --git a/src/Umbraco.Core/Persistence/Repositories/RedirectUrlRepository.cs b/src/Umbraco.Core/Persistence/Repositories/RedirectUrlRepository.cs index d66a08c129..eee1ae7a3e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/RedirectUrlRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/RedirectUrlRepository.cs @@ -12,7 +12,7 @@ using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Persistence.Repositories { - internal class RedirectUrlRepository : PetaPocoRepositoryBase, IRedirectUrlRepository + internal class RedirectUrlRepository : PetaPocoRepositoryBase, IRedirectUrlRepository { public RedirectUrlRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) : base(work, cache, logger, sqlSyntax) @@ -23,19 +23,19 @@ namespace Umbraco.Core.Persistence.Repositories throw new NotSupportedException("This repository does not support this method."); } - protected override bool PerformExists(int id) + protected override bool PerformExists(Guid id) { return PerformGet(id) != null; } - protected override IRedirectUrl PerformGet(int id) + protected override IRedirectUrl PerformGet(Guid id) { var sql = GetBaseQuery(false).Where(x => x.Id == id); var dto = Database.Fetch(SqlSyntax.SelectTop(sql, 1)).FirstOrDefault(); return dto == null ? null : Map(dto); } - protected override IEnumerable PerformGetAll(params int[] ids) + protected override IEnumerable PerformGetAll(params Guid[] ids) { if (ids.Length > 2000) throw new NotSupportedException("This repository does not support more than 2000 ids."); @@ -86,7 +86,7 @@ JOIN umbracoNode ON umbracoRedirectUrl.contentKey=umbracoNode.uniqueID"); { var dto = Map(entity); Database.Insert(dto); - entity.Id = dto.Id; + entity.Id = entity.Key.GetHashCode(); } protected override void PersistUpdatedItem(IRedirectUrl entity) @@ -101,7 +101,7 @@ JOIN umbracoNode ON umbracoRedirectUrl.contentKey=umbracoNode.uniqueID"); return new RedirectUrlDto { - Id = redirectUrl.Id, + Id = redirectUrl.Key, ContentKey = redirectUrl.ContentKey, CreateDateUtc = redirectUrl.CreateDateUtc, Url = redirectUrl.Url, @@ -117,7 +117,7 @@ JOIN umbracoNode ON umbracoRedirectUrl.contentKey=umbracoNode.uniqueID"); try { url.DisableChangeTracking(); - url.Id = dto.Id; + url.Id = dto.Id.GetHashCode(); url.ContentId = dto.ContentId; url.ContentKey = dto.ContentKey; url.CreateDateUtc = dto.CreateDateUtc; @@ -148,7 +148,7 @@ JOIN umbracoNode ON umbracoRedirectUrl.contentKey=umbracoNode.uniqueID"); Database.Execute("DELETE FROM umbracoRedirectUrl WHERE contentKey=@contentKey", new { contentKey }); } - public void Delete(int id) + public void Delete(Guid id) { Database.Delete(id); } diff --git a/src/Umbraco.Core/Services/IRedirectUrlService.cs b/src/Umbraco.Core/Services/IRedirectUrlService.cs index 7b21fa9bb7..d359958d63 100644 --- a/src/Umbraco.Core/Services/IRedirectUrlService.cs +++ b/src/Umbraco.Core/Services/IRedirectUrlService.cs @@ -33,7 +33,7 @@ namespace Umbraco.Core.Services /// Deletes a redirect url. /// /// The redirect url identifier. - void Delete(int id); + void Delete(Guid id); /// /// Deletes all redirect urls. diff --git a/src/Umbraco.Core/Services/RedirectUrlService.cs b/src/Umbraco.Core/Services/RedirectUrlService.cs index de698509d0..723532665a 100644 --- a/src/Umbraco.Core/Services/RedirectUrlService.cs +++ b/src/Umbraco.Core/Services/RedirectUrlService.cs @@ -23,7 +23,7 @@ namespace Umbraco.Core.Services if (redir != null) redir.CreateDateUtc = DateTime.UtcNow; else - redir = new RedirectUrl { Url = url, ContentKey = contentKey }; + redir = new RedirectUrl { Key = Guid.NewGuid(), Url = url, ContentKey = contentKey }; repo.AddOrUpdate(redir); uow.Commit(); } @@ -39,7 +39,7 @@ namespace Umbraco.Core.Services } } - public void Delete(int id) + public void Delete(Guid id) { using (var uow = UowProvider.GetUnitOfWork()) using (var repo = RepositoryFactory.CreateRedirectUrlRepository(uow))