我正在学习Jeffrey Palermo的Onion Architecture两周多了.我按照本教程创建了一个测试项目.在学习期间,我在SO上遇到了这个问题.根据公认的答案,有人nwang建议像GetProductsByCategoryId这样的方法不应该在Repository中,而另一方面则Dennis Traub
建议它是Repository的责任.我在做的是:
我有一个通用存储库Domain.Interface,我有一个方法Find:
public interface IRepository<TEntity> where TEntity : class
{
IEnumerable<TEntity> Find(Expression<Func<TEntity, bool>> filter = null);
.......
.......
.......
}
Run Code Online (Sandbox Code Playgroud)
然后,我创建了一个BaseRepository在Infrastucture.Data:
public class RepositoryBase<TEntity> : IRepository<TEntity> where TEntity : class
{
internal readonly DbSet<TEntity> dbSet;
public virtual IEnumerable<TEntity> Find(
Expression<Func<TEntity, bool>> filter = null)
{
IQueryable<TEntity> query = dbSet;
if (filter != null)
{
query = query.Where(filter);
}
return query.ToList();
} …Run Code Online (Sandbox Code Playgroud) asp.net-mvc design-patterns repository-pattern onion-architecture