Entity Framework код первого ctp 5 с использованием IDbSet в классе RepositoryBase - PullRequest
2 голосов
/ 14 марта 2011

Я хочу выяснить, имеет ли смысл сначала использовать код Entity Framework ctp 5 IDbSet в базовом классе репозитория.

Я использую шаблон репозитория (и хотел бы следовать методу постоянного невежества)) для моих реализаций, и я хотел бы использовать поддельные данные для тестирования (используя ложную реализацию в памяти IDBset).

Я чувствую, что добавление зависимости к System.Data.Entity.IDbSet свяжет мою реализациюбазового класса репозитория для IDBset и, если в нем есть какие-либо будущие изменения, которые могут нарушить код.Каков наилучший способ реализации базового класса репозитория без зависимости Idbset?

Я слежу за этим сообщением: Советы и рекомендации EF CTP4: тестирование с использованием Fake DbContext для реализации подделок.

//_dbset impliments the IDBset

//Database inherits from DbContext

    protected RepositoryBase(UnitOfWork  unitOfWork)
    {
        _unitOfWork = unitOfWork;
        _dbset = _unitOfWork.Database.Set<T>();
    }       

    public virtual void Add(T entity)
    {
        _dbset.Add(entity);
    }

    public virtual void Delete(T entity)
    {
        _dbset.Remove(entity);
    }

    public virtual T GetById(long id)
    {
        return _dbset.Find(id);
    }

    public virtual IEnumerable<T> All()
    {
        return _dbset.ToList();
    }

1 Ответ

2 голосов
/ 14 марта 2011

Это точка хранилища, чтобы обернуть зависимости на уровне отображения.Так что в вашем случае вы будете зависеть от EF CTP5 и IDbSet - это правильно.Это правильный подход.Если вы хотите протестировать свой код, вы, например, будете:

  • Проверять весь репозиторий при модульном тестировании верхнего уровня
  • Использовать конкретный репозиторий для интеграционных тестов
...