我是 ASP.NET MVC 新手(但 .NET 经验丰富的开发人员),我正在尝试学习如何正确设置 Web 应用程序基础结构。存储库模式是我这些天正在处理的,在过去几天阅读了数十篇博客/文章/答案之后,我仍然不确定如何正确使用它。我正在向Pro ASP.NET MVC 4 Adam Freeman学习,这里是基于本书的存储库接口代码:
public interface IRepository<T>
{
IQueryable<T> FindAll();
IQueryable<T> Find(Expression<Func<T, bool>> predicate);
void Add(T newEntity);
void Remove(T entity);
T FindById(long id);
}
在网上进行更多研究后,我意识到很多人认为从存储库返回 IQueryable 是不好的做法,我可以(大部分)理解原因。但是,我似乎无法找到关于替代方案的答案?我知道为每个实体拥有一个自定义存储库的想法,该存储库对每个可能的查询都有专门的方法,基本上会返回 IEnumerable 而不是 IQueryable ......但这对我来说似乎不合适(这也不是优雅的解决方案许多代码编写和可能的代码冗余等......)。
还有什么其他选择?