public static EntityReference <TProperty> DecorateEntityReference <TEntity, TProperty>(this TEntity entity, int propertyID, EntityReference <TProperty> reference) where TEntity : EntityObject, IWithHistory where TProperty : EntityObject, IEntityExtend { if (entity.CollectionChanges == null) { // TODO: throw } ChangeMonitorBase monitor = entity.CollectionChanges.ChangeMonitors.Find(x => Object.ReferenceEquals(x.TargetEnd, reference)); if (monitor == null) { monitor = new ReferenceChangeMonitor <TEntity, TProperty>(entity, propertyID, reference); entity.CollectionChanges.ChangeMonitors.Add(monitor); } return(reference); }
public ChangeEntry(ChangeMonitorBase monitor, EntityObject source, EntityObject target, ChangeActionKind action) { if (monitor == null) { throw new ArgumentNullException("monitor"); } if (source == null) { throw new ArgumentNullException("source"); } if (target == null) { throw new ArgumentNullException("target"); } this.Monitor = monitor; this.Source = source; this.Target = target; this.Action = action; }