相关疑难解决方法(0)

什么是LINQ,它做什么?

什么是LINQ?我知道它适用于数据库,但它有什么作用?

c# linq

119
推荐指数
6
解决办法
8万
查看次数

数据过滤是否发生在控制器,服务或存储库层中?

我在用ASP.NET MVC 3.我按以下顺序获取我的视图数据:

Controller -> Service Layer -> Repository
Run Code Online (Sandbox Code Playgroud)

在我的存储库中,我有一个GetAll方法,它可以返回特定对象的所有记录,例如Category.

因此,如果我需要所有类别的列表,那么在我的控制器中我会有类似的东西:

IEnumerable<Category> categories = categoryService.GetAll();
Run Code Online (Sandbox Code Playgroud)

在服务层我会有类似的东西:

public IEnumerable<Category> GetAll()
{
     return categoryRepository.GetAll();
}
Run Code Online (Sandbox Code Playgroud)

现在我需要知道我在哪里开始过滤数据?它可以在这3层中的任何一层中完成,还是只需要在存储库层中?让我们说我需要所有的父类别.我是否拥有.GetAll.Where(x => x.ParentCategoryId == null);控制器,服务层或存储库层?

在我的控制器中是否有这样的情况:

IEnumerable<Category> categories = categoryService.GetParentCategories();
Run Code Online (Sandbox Code Playgroud)

在我的服务层,我可以:

public IEnumerable<Category> GetParentCategories()
{
     return categoryRepository.GetAll.Where(x => x.ParentCategoryId == null);
}
Run Code Online (Sandbox Code Playgroud)

或者我的服务层必须如下所示:

public IEnumerable<Category> GetParentCategories()
{
     return categoryRepository.GetParentCategories();
}
Run Code Online (Sandbox Code Playgroud)

然后在我的存储库层中,像这样:

public IEnumerable<Category> GetParentCategories()
{
     return GetAll()
          .Where(x => x.ParentCategoryId == null);
}
Run Code Online (Sandbox Code Playgroud)

请有人帮助澄清我的这种困惑.可能有不同的情况.我可能会带回所有具有活动状态的类别.我可能会带回非活动状态的类别.那我每个都需要一个方法吗?

c# asp.net-mvc repository entity-framework-4.1 asp.net-mvc-3

8
推荐指数
2
解决办法
1870
查看次数