3

我正在第一次尝试实现通用存储库模式和框架单元。我没有在手头的项目上使用 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();
        }
    }

它必须是一种强大的方法,并且很好地完成了 DRY 的目标。我的问题是,我不能将结果排序为降序?任何人都可以写一些代码来帮助我吗?谢谢,

4

2 回答 2

2

看看这个: http: //prodinner.codeplex.com/和这个http://efmvc.codeplex.com/。这些项目是简单架构的好例子,您可以看到通用存储库是如何实现的以及它是如何使用的。

于 2013-05-17T14:28:22.290 回答
0

要按产品类别过滤,试试这个:

var repo = new GenericRepository<Product>();

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

这里我们声明一个通用存储库的实例,实体类型为 Product,然后我们传递一个 lamda 表达式,该表达式对名称为“Foo”的每个 Product 的 Category 执行过滤。

于 2013-05-17T14:17:42.207 回答