diff --git a/src/Umbraco.Core/Models/Media.cs b/src/Umbraco.Core/Models/Media.cs
index 45c1ebeb62..dd2ec17f2a 100644
--- a/src/Umbraco.Core/Models/Media.cs
+++ b/src/Umbraco.Core/Models/Media.cs
@@ -108,15 +108,5 @@ namespace Umbraco.Core.Models
if (Key == Guid.Empty)
Key = Guid.NewGuid();
}
-
- ///
- /// Method to call when Entity is being updated
- ///
- /// Modified Date is set and a new Version guid is set
- internal override void UpdatingEntity()
- {
- base.UpdatingEntity();
- Version = Guid.NewGuid();
- }
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
index 7280d7aa26..efdafa91d8 100644
--- a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
@@ -342,6 +342,8 @@ namespace Umbraco.Core.Persistence.Repositories
//Create the PropertyData for this version - cmsPropertyData
var propertyFactory = new PropertyFactory(((Content)entity).ContentType, entity.Version, entity.Id);
var propertyDataDtos = propertyFactory.BuildDto(entity.Properties);
+ var keyDictionary = new Dictionary();
+
//Add Properties
foreach (var propertyDataDto in propertyDataDtos)
{
@@ -351,7 +353,17 @@ namespace Umbraco.Core.Persistence.Repositories
}
else
{
- Database.Insert(propertyDataDto);
+ int primaryKey = Convert.ToInt32(Database.Insert(propertyDataDto));
+ keyDictionary.Add(propertyDataDto.PropertyTypeId, primaryKey);
+ }
+ }
+
+ //Update Properties with its newly set Id
+ if (keyDictionary.Any())
+ {
+ foreach (var property in entity.Properties)
+ {
+ property.Id = keyDictionary[property.PropertyTypeId];
}
}
diff --git a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
index 8b4f57f650..288ccd43e5 100644
--- a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
@@ -231,7 +231,7 @@ namespace Umbraco.Core.Persistence.Repositories
protected override void PersistUpdatedItem(IMedia entity)
{
- //Updates Modified date and Version Guid
+ //Updates Modified date
((Models.Media)entity).UpdatingEntity();
var factory = new MediaFactory(NodeObjectTypeId, entity.Id);
@@ -252,17 +252,36 @@ namespace Umbraco.Core.Persistence.Repositories
Database.Update(newContentDto);
}
- //Create a new version - cmsContentVersion
- //Assumes a new Version guid and Version date (modified date) has been set
- Database.Insert(dto);
+ //Updates the current version - cmsContentVersion
+ //Assumes a Version guid exists and Version date (modified date) has been set/updated
+ Database.Update(dto);
//Create the PropertyData for this version - cmsPropertyData
var propertyFactory = new PropertyFactory(entity.ContentType, entity.Version, entity.Id);
var propertyDataDtos = propertyFactory.BuildDto(entity.Properties);
+ var keyDictionary = new Dictionary();
+
//Add Properties
foreach (var propertyDataDto in propertyDataDtos)
{
- Database.Insert(propertyDataDto);
+ if (propertyDataDto.Id > 0)
+ {
+ Database.Update(propertyDataDto);
+ }
+ else
+ {
+ int primaryKey = Convert.ToInt32(Database.Insert(propertyDataDto));
+ keyDictionary.Add(propertyDataDto.PropertyTypeId, primaryKey);
+ }
+ }
+
+ //Update Properties with its newly set Id
+ if (keyDictionary.Any())
+ {
+ foreach (var property in entity.Properties)
+ {
+ property.Id = keyDictionary[property.PropertyTypeId];
+ }
}
((ICanBeDirty)entity).ResetDirtyProperties();