【发布时间】:2011-09-18 23:29:48
【问题描述】:
我有一个具体的存储库实现,它返回实体的 IQueryable:
public class Repository
{
private AppDbContext context;
public Repository()
{
context = new AppDbContext();
}
public IQueryable<Post> GetPosts()
{
return context.Posts;
}
}
然后,我的服务层可以根据其他方法(位置、分页等)的需要执行 LINQ
现在我的服务层设置为返回 IEnumerable:
public IEnumerable<Post> GetPageOfPosts(int pageNumber, int pageSize)
{
Repository postRepo = new Repository();
var posts = (from p in postRepo.GetPosts() //this is IQueryable
orderby p.PostDate descending
select p)
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize);
return posts;
}
这意味着如果我想绑定到中继器或其他控件,我必须在我的代码隐藏中执行 ToList()。
这是处理返回类型的最佳方式,还是我需要在从服务层方法返回之前转换为列表?
【问题讨论】:
标签: c# asp.net entity-framework architecture