Is UnitOfWork and GenericRepository Pattern redundant In EF 4.1 code first?

后端 未结 3 1650
难免孤独
难免孤独 2020-11-27 15:15

Wondering if I need to use the Genericrepository pattern and UnitOfWork to mock the repository.I am using MOQ.Is it now redundant since I have noticed that EF 4.1 has IDBSet

3条回答
  •  甜味超标
    2020-11-27 15:51

    public class MockDbSet : IDbSet where T : class,  new()
        {
            private List _entities;
    
            public MockDbSet(List entities)
            {
                _entities = entities;
            }
    
            public virtual T Add(T entity)
            {
                _entities.Add(entity);
                return entity;
            }
    
            public virtual T Attach(T entity)
            {
                _entities.Add(entity);
                return entity;
            }
    
            public TDerivedEntity Create() where TDerivedEntity : class, T
            {
                return new T() as TDerivedEntity;
            }
    
            public virtual T Create()
            {
                return new T();
            }
    
            public virtual T Find(params object[] keyValues)
            {
                throw new NotImplementedException();
            }
    
            public System.Collections.ObjectModel.ObservableCollection Local
            {
                get
                {
                    return new ObservableCollection(_entities);
                }
            }
    
            public virtual T Remove(T entity)
            {
                _entities.Remove(entity);
                return entity;
            }
    
            public IEnumerator GetEnumerator()
            {
                return _entities.GetEnumerator();
            }
    
            System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
            {
                return _entities.GetEnumerator();
            }
    
            public Type ElementType
            {
                get { return _entities.AsQueryable().ElementType; }
            }
    
            public System.Linq.Expressions.Expression Expression
            {
                get { return _entities.AsQueryable().Expression; }
            }
    
            public IQueryProvider Provider
            {
                get { return _entities.AsQueryable().Provider; }
            }
        }
    

提交回复
热议问题