/// <summary> /// Returns an <see cref="T:System.ComponentModel.BindingList`1" /> implementation that stays in sync with the given /// <see cref="T:System.Collections.ObjectModel.ObservableCollection`1" />. /// </summary> /// <typeparam name="T"> The element type. </typeparam> /// <param name="source"> The collection that the binding list will stay in sync with. </param> /// <returns> The binding list. </returns> public static BindingList <T> ToBindingList <T>(this ObservableCollection <T> source) where T : class { Check.NotNull <ObservableCollection <T> >(source, nameof(source)); DbLocalView <T> dbLocalView = source as DbLocalView <T>; if (dbLocalView == null) { return((BindingList <T>) new ObservableBackedBindingList <T>(source)); } return((BindingList <T>)dbLocalView.BindingList); }
public void State_manager_Add_event_for_entity_of_wrong_type_for_DbLocalView_is_ignored() { var mockInternalContext = CreateMockedInternalContext(new Mock <IDbSet <FakeEntity> >()); CollectionChangeEventHandler stateManagerChanged = null; mockInternalContext.Setup(i => i.RegisterObjectStateManagerChangedEvent(It.IsAny <CollectionChangeEventHandler>())). Callback <CollectionChangeEventHandler>(h => stateManagerChanged = h); var localView = new DbLocalView <FakeEntity>(mockInternalContext.Object); stateManagerChanged.Invoke(null, new CollectionChangeEventArgs(CollectionChangeAction.Add, "Wrong Type")); Assert.Equal(0, localView.Count); }
public void State_manager_Add_event_causes_entity_to_be_added_to_DbLocalView() { var mockInternalContext = CreateMockedInternalContext(new Mock <IDbSet <FakeEntity> >()); CollectionChangeEventHandler stateManagerChanged = null; mockInternalContext.Setup(i => i.RegisterObjectStateManagerChangedEvent(It.IsAny <CollectionChangeEventHandler>())). Callback <CollectionChangeEventHandler>(h => stateManagerChanged = h); var localView = new DbLocalView <FakeEntity>(mockInternalContext.Object); var entity = new FakeEntity(); stateManagerChanged.Invoke(null, new CollectionChangeEventArgs(CollectionChangeAction.Add, entity)); Assert.True(localView.Contains(entity)); }
public EntityListMock() { #if EF_5_0 var collection = new ObservableCollection <T>(); #else var collection = new DbLocalView <T>(); #endif var queryable = collection.AsQueryable(); SetupGet(p => p.ElementType).Returns(queryable.ElementType); SetupGet(p => p.Expression).Returns(queryable.Expression); Setup(p => p.GetEnumerator()).Returns(queryable.GetEnumerator()); SetupGet(p => p.Provider).Returns(queryable.Provider); Setup(p => p.Add(It.IsAny <T>())) .Callback((T d) => collection.Add(d)); Setup(p => p.Remove(It.IsAny <T>())).Callback((T d) => collection.Remove(d)); SetupGet(p => p.Local).Returns(collection); }
public override void ResetQuery() { this._entitySet = (EntitySet)null; this._localView = (DbLocalView <TEntity>)null; base.ResetQuery(); }
/// <summary> /// Resets the set to its uninitialized state so that it will be re-lazy initialized the next /// time it is used. This allows the ObjectContext backing a DbContext to be switched out. /// </summary> public override void ResetQuery() { _entitySet = null; _localView = null; base.ResetQuery(); }