Является ли шаблон UnitOfWork и GenericRepository избыточным в коде EF 4.1 первым? - PullRequest
20 голосов
/ 23 апреля 2011

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

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

Есть предложения?

Ответы [ 3 ]

29 голосов
/ 23 апреля 2011

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

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

0 голосов
/ 08 декабря 2014

Кроме того, я хочу добавить, что общий репозиторий и единица работы в Entity Framework являются избыточными, перейдите по этой ссылке http://rob.conery.io/2014/03/04/repositories-and-unitofwork-are-not-a-good-idea/

0 голосов
/ 18 октября 2011
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; }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...