Реализация общего репозитория с использованием кода платформы Entity

Я испытываю свою первую попытку внедрения Generic Repository Pattern и Unit of framework. Я не использую MVC в проекте. Пожалуйста, взгляните на этот метод, включенный в класс Generic Repository:

public virtual IEnumerable<TEntity> Get(
        Expression<Func<TEntity, bool>> filter = null,
        Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
        string includeProperties = "")
    {
        IQueryable<TEntity> query = dbSet;

        if (filter != null)
        {
            query = query.Where(filter);
        }

        foreach (var includeProperty in includeProperties.Split
            (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
        {
            query = query.Include(includeProperty);
        }

        if (orderBy != null)
        {
            return orderBy(query).ToList();
        }
        else
        {
            return query.ToList();
        }
    }

Это должен быть мощный метод, который хорошо выполняет задачу СУХОГО. Моя проблема в том, что я не могу заказать результат по убыванию? Может кто-нибудь написать несколько строк кода, чтобы помочь мне в этом? Спасибо,

2 ответа

Решение

Чтобы отфильтровать по категории продукта, попробуйте это:

var repo = new GenericRepository<Product>();

var results = repo.Get(
    p => p.Category.Name == "Foo");

Здесь мы объявляем экземпляр Generic Repository с типом сущности Product, затем передаем лямда-выражение, которое выполняет фильтрацию для каждой категории Product с именем "Foo".

Посмотрите на это: http://prodinner.codeplex.com/ и этот http://efmvc.codeplex.com/. Эти проекты являются хорошими примерами простой архитектуры, и вы можете увидеть, как реализован общий репозиторий и как он используется.

Другие вопросы по тегам