Updates all Entity models to use SetPropertyValueAndDetectChanges for setting all simple properties so that

tracking changes works the way it is supposed to. Creates a TracksChangesEntityBase class for any other entity
that wants to implement IRememberBeingDirty (now Entity inherits from this). Upgraded a bunch of other entities that
were not tracking changes properly.
This commit is contained in:
Shannon Deminick
2013-03-21 00:05:56 +06:00
parent b96b372400
commit 7ea87638f7
25 changed files with 1056 additions and 330 deletions

View File

@@ -1,4 +1,5 @@
using System;
using System.Reflection;
using Umbraco.Core.Models.EntityBase;
namespace Umbraco.Core.Models
@@ -8,6 +9,28 @@ namespace Umbraco.Core.Models
/// </summary>
internal class UmbracoEntity : Entity, IUmbracoEntity
{
private int _creatorId;
private int _level;
private string _name;
private int _parentId;
private string _path;
private int _sortOrder;
private bool _trashed;
private bool _hasChildren;
private bool _isPublished;
private Guid _nodeObjectTypeId;
private static readonly PropertyInfo CreatorIdSelector = ExpressionHelper.GetPropertyInfo<UmbracoEntity, int>(x => x.CreatorId);
private static readonly PropertyInfo LevelSelector = ExpressionHelper.GetPropertyInfo<UmbracoEntity, int>(x => x.Level);
private static readonly PropertyInfo NameSelector = ExpressionHelper.GetPropertyInfo<UmbracoEntity, string>(x => x.Name);
private static readonly PropertyInfo ParentIdSelector = ExpressionHelper.GetPropertyInfo<UmbracoEntity, int>(x => x.ParentId);
private static readonly PropertyInfo PathSelector = ExpressionHelper.GetPropertyInfo<UmbracoEntity, string>(x => x.Path);
private static readonly PropertyInfo SortOrderSelector = ExpressionHelper.GetPropertyInfo<UmbracoEntity, int>(x => x.SortOrder);
private static readonly PropertyInfo TrashedSelector = ExpressionHelper.GetPropertyInfo<UmbracoEntity, bool>(x => x.Trashed);
private static readonly PropertyInfo HasChildrenSelector = ExpressionHelper.GetPropertyInfo<UmbracoEntity, bool>(x => x.HasChildren);
private static readonly PropertyInfo IsPublishedSelector = ExpressionHelper.GetPropertyInfo<UmbracoEntity, bool>(x => x.IsPublished);
private static readonly PropertyInfo NodeObjectTypeIdSelector = ExpressionHelper.GetPropertyInfo<UmbracoEntity, Guid>(x => x.NodeObjectTypeId);
public UmbracoEntity()
{
}
@@ -17,24 +40,134 @@ namespace Umbraco.Core.Models
Trashed = trashed;
}
public int CreatorId { get; set; }
public int CreatorId
{
get { return _creatorId; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_creatorId = value;
return _creatorId;
}, _creatorId, CreatorIdSelector);
}
}
public int Level { get; set; }
public int Level
{
get { return _level; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_level = value;
return _level;
}, _level, LevelSelector);
}
}
public string Name { get; set; }
public string Name
{
get { return _name; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_name = value;
return _name;
}, _name, NameSelector);
}
}
public int ParentId { get; set; }
public int ParentId
{
get { return _parentId; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_parentId = value;
return _parentId;
}, _parentId, ParentIdSelector);
}
}
public string Path { get; set; }
public string Path
{
get { return _path; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_path = value;
return _path;
}, _path, PathSelector);
}
}
public int SortOrder { get; set; }
public int SortOrder
{
get { return _sortOrder; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_sortOrder = value;
return _sortOrder;
}, _sortOrder, SortOrderSelector);
}
}
public bool Trashed { get; private set; }
public bool Trashed
{
get { return _trashed; }
private set
{
SetPropertyValueAndDetectChanges(o =>
{
_trashed = value;
return _trashed;
}, _trashed, TrashedSelector);
}
}
public bool HasChildren { get; set; }
public bool HasChildren
{
get { return _hasChildren; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_hasChildren = value;
return _hasChildren;
}, _hasChildren, HasChildrenSelector);
}
}
public bool IsPublished { get; set; }
public bool IsPublished
{
get { return _isPublished; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_isPublished = value;
return _isPublished;
}, _isPublished, IsPublishedSelector);
}
}
public Guid NodeObjectTypeId { get; set; }
public Guid NodeObjectTypeId
{
get { return _nodeObjectTypeId; }
set
{
SetPropertyValueAndDetectChanges(o =>
{
_nodeObjectTypeId = value;
return _nodeObjectTypeId;
}, _nodeObjectTypeId, NodeObjectTypeIdSelector);
}
}
}
}