public TrackingCollection(IStateTransitionManager stateTransitionManager, IEqualityComparer <object> comparer = null)
 {
     if (stateTransitionManager == null)
     {
         stateTransitionManager = Infrastructure.StateTransitionManager.Instance;
     }
     StateTransitionManagerInternal = stateTransitionManager;
     ItemsInternal = new Dictionary <object, EntityState>(comparer ?? ReferenceEqualityComparer.Instance);
 }
예제 #2
0
 public TrackingCollection([NotNull] IEnumerable <KeyValuePair <object, EntityState> > changes,
                           IStateTransitionManager stateTransitionManager = null, IEqualityComparer <object> comparer = null)
     : this(stateTransitionManager, comparer)
 {
     Should.NotBeNull(changes, nameof(changes));
     foreach (var item in changes)
     {
         ItemsInternal.Add(item.Key, item.Value);
     }
 }
예제 #3
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="TrackingCollection" /> class.
 /// </summary>
 public TrackingCollection([NotNull] IEnumerable <IEntityStateEntry> changes,
                           IStateTransitionManager stateTransitionManager = null, IEqualityComparer <object> comparer = null)
     : this(stateTransitionManager, comparer)
 {
     Should.NotBeNull(changes, "changes");
     foreach (var item in changes)
     {
         ItemsInternal.Add(item.Entity, item.State);
     }
 }
예제 #4
0
 public TrackingCollection([NotNull] IEnumerable <object> collection,
                           EntityState entityState = EntityState.Unchanged,
                           IStateTransitionManager stateTransitionManager = null, IEqualityComparer <object> comparer = null)
     : this(stateTransitionManager, comparer)
 {
     Should.NotBeNull(collection, nameof(collection));
     foreach (object item in collection)
     {
         ItemsInternal.Add(item, entityState);
     }
 }
예제 #5
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="TrackingCollection" /> class.
        /// </summary>
        public TrackingCollection(IStateTransitionManager stateTransitionManager = null,
                                  IEqualityComparer <object> comparer            = null)
        {
            if (stateTransitionManager == null)
            {
                stateTransitionManager = ServiceProvider.TrackingCollectionStateTransitionManagerFactory(this) ??
                                         Infrastructure.StateTransitionManager.Instance;
            }
            if (comparer == null)
            {
                comparer = ServiceProvider.TrackingCollectionEqualityComparerFactory(this) ??
                           ReferenceEqualityComparer.Instance;
            }

            Locker = new object();
            StateTransitionManagerInternal = stateTransitionManager;
            ItemsInternal = new Dictionary <object, EntityState>(comparer);
        }
 protected virtual ITrackingCollection Create(IStateTransitionManager transitionManager = null, IEqualityComparer <object> comparer = null)
 {
     return(new TrackingCollection(transitionManager, comparer));
 }