Подтвердить что ты не робот

Является ли UnitOfWork и GenericRepository шаблоном избыточным в первом коде EF 4.1?

Интересно, нужно ли мне использовать шаблон Genericrepository и UnitOfWork, чтобы имитировать репозиторий. Я использую MOQ.Is, теперь он избыточен, так как я заметил, что EF 4.1 имеет IDBSet.

Я не понял, как написать что-то общее, что usic IDBSet. Если у вас есть пример, где вы реализуете IDBSet, вы можете показать его мне?

Любые предложения?

4b9b3361

Ответ 1

Это дубликат многих тем, которые уже обсуждались в SO, но я согласен, что некоторые из них могут быть трудно найти, потому что они вложены в другой вопрос

Надеюсь, это даст вам несколько ответов. Если нет, не стесняйтесь запрашивать дополнительную информацию здесь или в новом вопросе.

Ответ 2

public class MockDbSet<T> : IDbSet<T> where T : class,  new()
    {
        private List<T> _entities;

        public MockDbSet(List<T> 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<TDerivedEntity>() 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<T> Local
        {
            get
            {
                return new ObservableCollection<T>(_entities);
            }
        }

        public virtual T Remove(T entity)
        {
            _entities.Remove(entity);
            return entity;
        }

        public IEnumerator<T> 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; }
        }
    }