调用.tolist()的最佳位置在哪里;在我的控制器类中或在我的模型存储库类中

时间:2013-11-13 09:46:00

标签: asp.net-mvc linq entity-framework entity-framework-4

我的asp.net mvc web应用程序中有以下操作方法: -

public JsonResult LoadZoneByDataCenter(string id)
        {
            var zonelist = repository.getrealtedzone(Convert.ToInt32(id)).ToList();
//code goes here

调用以下模型存储库方法: -

 public IQueryable<Zone> getrealtedzone(int? dcid) {

         return   tms.Zones.Where(a=> a.DataCenterID == dcid || dcid == null);
        }

目前我正在调用.tolist(),它将从我的action方法解释数据库,但我的问题是在控制器内部或模型类内部调用.tolist()的最佳位置在哪里?为什么? / p>

感谢

1 个答案:

答案 0 :(得分:2)

最好不要在您的存储库中调用.ToList(),而应在控制器中调用.ToList()。这样,您可以执行并将来自存储库的多个复杂查询组合到单个数据库调用中。一旦您拥有了视图所需的整个数据组合,请调用{{1}}来执行SQL查询。否则,对于可以由SQL JOIN处理的事情,您将进行多个查询。