public CollectionValueProvider(CloneChangesHelper resolver, MemberInfo member, IValueProvider valueProvider) { _resolver = resolver; _member = member; _valueProvider = valueProvider; }
/// <summary> /// Get entities that have been added, modified or deleted, including child /// collections with entities that have been added, modified or deleted. /// </summary> /// <returns>Collection containing only changed entities</returns> public ChangeTrackingCollection <TEntity> GetChanges() { // Temporarily restore deletes this.RestoreDeletes(); try { return(CloneChangesHelper.GetChanges(this)); } finally { // Remove deletes this.RemoveRestoredDeletes(); } }
public static ChangeTrackingCollection <TEntity> GetChanges(ChangeTrackingCollection <TEntity> source) { var helper = new CloneChangesHelper(); var wrapper = new Wrapper() { Result = source }; // Inspect the graph and collect entityChangedInfos helper.GetChanges(Enumerable.Repeat(wrapper, 1)).ToList(); // Clone only changed items var clone = TrackableExtensions.CloneObject(wrapper, helper); return(clone.Result); }