首先使用实体框架代码实现通用存储库

本文关键字:实现 存储 代码 框架 实体 | 更新日期: 2023-09-27 18:14:00

我正在经历实现通用存储库模式和框架单元的第一次尝试。我不使用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的目标。我的问题是,我不能命令结果降序?有人能写几行代码来帮助我吗?谢谢你,

首先使用实体框架代码实现通用存储库

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

按产品类别进行筛选,请尝试:

var repo = new GenericRepository<Product>();
var results = repo.Get(
    p => p.Category.Name == "Foo");

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