C# 在MVC4和MVC中重构不同控制器中的LINQ查询#

C# 在MVC4和MVC中重构不同控制器中的LINQ查询#,c#,asp.net-mvc,refactoring,dry,C#,Asp.net Mvc,Refactoring,Dry,我正在尝试将DRY(不要重复)应用到我的MVC4程序中 我在两个不同的控制器中有两个LINQ查询 查询是相同的 使查询对两个控制器都可用的最佳方法是什么 提前感谢您的建议。根据您所说的,LINQ声明是相同的,对吗?例如,获取活动小时工、库存物品等的列表 在这种情况下,最好将这些常用方法添加到实体模型中。如果您生成了类,那么它们是分部类,因此您只需创建一个分部类,其中包含检索常用数据所需的例程。该类将放在您的模型文件夹中。它看起来像这样 namespace MyNamespace.Models {

我正在尝试将DRY(不要重复)应用到我的MVC4程序中

我在两个不同的控制器中有两个LINQ查询

查询是相同的

使查询对两个控制器都可用的最佳方法是什么


提前感谢您的建议。

根据您所说的,LINQ声明是相同的,对吗?例如,获取活动小时工、库存物品等的列表

在这种情况下,最好将这些常用方法添加到实体模型中。如果您生成了类,那么它们是分部类,因此您只需创建一个分部类,其中包含检索常用数据所需的例程。该类将放在您的模型文件夹中。它看起来像这样

namespace MyNamespace.Models
{
    public partial class MyEntities
    {

        IQueryable<InventoryItem> InStockInventoryItems()
        {
            return this.InventoryItems.Where(m => m.Quantity > 0);
        }

    }
}
名称空间MyNamespace.Models
{
公共部分类髓鞘
{
IQueryable InStockInventoryItems()
{
返回此.InventoryItems.Where(m=>m.Quantity>0);
}
}
}

您有BL层吗?没有,我使用的是实体框架数据模型,并通过LINQ查询访问控制器中的数据。直接从您的控制器?这不是个好主意。如果您决定使用WebAPI为移动应用程序执行完全相同的操作,那么您将重复很多次。控制器应该只是一个路由器,调用BL层中的相关方法。BL层应该执行所有逻辑,而不是控制器。