【问题标题】:EF Generic Repository Multiple Includes and OrderBy CallEF 通用存储库多个包含和 OrderBy 调用
【发布时间】:2019-05-24 20:43:33
【问题描述】:

我查看了许多 EF 通用存储库的示例。我找不到 OrderByInclude 的实例。我不知道如何在控制器 (orderBy:?,includes:?) 中填写问题点。我卡在这里。我正在等待您的帮助

存储库

public List<T> Get(Expression<Func<T, bool>> filter = null, Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null, params Expression<Func<T, object>>[] includes)
{
        E_ComDBContext db = new E_ComDBContext();
        DbSet<T> dbSet;
        dbSet = db.Set<T>();

        IQueryable<T> query = dbSet;

        foreach (Expression<Func<T, object>> include in includes)
            query = query.Include(include);

        //if (select != null)
        //    query = query.Select(select);
        if (filter != null)
            query = query.Where(filter);

        if (orderBy != null)
            query = orderBy(query);

        return query.ToList();
}

控制器

public JsonResult List()
{
    Repository<Product> _repository = new Repository<Product>();          
    var list = _repository.Get(x=>x.Price>10,orderBy:?,includes:?);           
    return Json(list, JsonRequestBehavior.AllowGet);
}

【问题讨论】:

  • 为什么还要写这样的get方法。如果您使用的是通用存储库,为什么不创建一个只返回 IQueryable 的 GetAll 方法,而开发人员只需添加自己的 ordeby 包含。

标签: c# asp.net-mvc entity-framework generics repository-pattern


【解决方案1】:

我会试一试。

var list = _repository.Get(filter: x => x.Price > 10, orderBy: x=> x.OrderBy(y => y.Price), x => x.Location, x=> x.Brand);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多