2013-05-17 2 views
4

Я испытываю первую попытку внедрения шаблона универсального репозитория и модуля. Я не использую MVC в проекте в руке. Пожалуйста, обратите внимание на этот метод включен в Generic класса Repository:Внедрение общего репозитория с использованием кода структуры Entity first

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(); 
     } 
    } 

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

ответ

0

Фильтрация по категориям продуктов, попробуйте следующее:

var repo = new GenericRepository<Product>(); 

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

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

+0

Он отлично работает, и проблема решена. – user2394196

+0

Ну ... Вы знаете, где происходит операция фильтра? Я точно имею в виду; памяти веб-сервера или базы данных? А также можете ли вы помочь упорядочить результат по убыванию? Извините, это первый раз, когда мы работаем с этим шаблоном, и я знаю, что мне нужно больше узнать о GENERICS в C# :(Но я был бы признателен, если бы снова помог мне. – user2394196

+0

Фильтрация происходит в базе данных, EF преобразует вашу лямбду выражение для SQL и передает его в базу данных. Извините, я не знаю о заказе, поскольку я не знаком с этим синтаксисом Func. Может быть, кто-то еще может помочь с этим? – Netricity

2

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

+0

Полезные ссылки ... – user2394196

Смежные вопросы