我正在尝试实现Generic Repository Pattern和Framework of Unit。我没有在项目中使用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的目标。 我的问题是,我不能将结果命令为降序?任何人都可以编写一些代码来帮助我吗?谢谢,
答案 0 :(得分:2)
请看一下:http://prodinner.codeplex.com/和此http://efmvc.codeplex.com/。 这些项目是简单架构的好例子,您可以看到如何实现通用存储库以及如何使用它。
答案 1 :(得分:0)
要按产品类别进行过滤,请尝试以下操作:
var repo = new GenericRepository<Product>();
var results = repo.Get(
p => p.Category.Name == "Foo");
这里我们声明一个Generic Repository的实例,实体类型为Product,然后我们传递一个lamda表达式,该表达式对名为“Foo”的每个Product类别执行过滤。