diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/ContentRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/ContentRepositoryBase.cs
index 77d114abe1..a7b23d95cb 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/ContentRepositoryBase.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/ContentRepositoryBase.cs
@@ -1010,6 +1010,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
///
///
///
+
protected void ReplacePropertyValues(TEntity entity, int versionId, int publishedVersionId, out bool edited, out HashSet editedCultures)
{
// Replace the property data.
@@ -1018,18 +1019,20 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var propDataSql = SqlContext.Sql().Select("*").From().Where(x => x.VersionId == versionId).ForUpdate();
var existingPropData = Database.Fetch(propDataSql);
- var propertyTypeToPropertyData = new Dictionary<(int propertyTypeId, int versionId), PropertyDataDto>();
+ var propertyTypeToPropertyData = new Dictionary<(int propertyTypeId, int versionId, int? languageId, string segment), PropertyDataDto>();
var existingPropDataIds = new List();
foreach (var p in existingPropData)
{
existingPropDataIds.Add(p.Id);
- propertyTypeToPropertyData[(p.PropertyTypeId, p.VersionId)] = p;
+ propertyTypeToPropertyData[(p.PropertyTypeId, p.VersionId, p.LanguageId, p.Segment)] = p;
}
var propertyDataDtos = PropertyFactory.BuildDtos(entity.ContentType.Variations, entity.VersionId, publishedVersionId, entity.Properties, LanguageRepository, out edited, out editedCultures);
+
foreach (var propertyDataDto in propertyDataDtos)
{
+
// Check if this already exists and update, else insert a new one
- if (propertyTypeToPropertyData.TryGetValue((propertyDataDto.PropertyTypeId, propertyDataDto.VersionId), out var propData))
+ if (propertyTypeToPropertyData.TryGetValue((propertyDataDto.PropertyTypeId, propertyDataDto.VersionId, propertyDataDto.LanguageId, propertyDataDto.Segment), out var propData))
{
propertyDataDto.Id = propData.Id;
Database.Update(propertyDataDto);
@@ -1049,6 +1052,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
Database.Execute(SqlContext.Sql().Delete().WhereIn(x => x.Id, existingPropDataIds));
}
+
}
private class NodeIdKey