【问题标题】:ASP.NET CORE Adding Business Logic to Model instead of ControllerASP.NET CORE 将业务逻辑添加到模型而不是控制器
【发布时间】:2020-03-19 18:25:58
【问题描述】:

在 ASP.NET CORE 中,我的 controller 中有我的逻辑和计算,但我知道瘦 controllers 和胖 models 是典型的方法。这是我的模型

public class Yearly
{
    public int Id {get;set;}
    public decimal Q1Rev {get;set;}
    public decimal Q2Rev {get;set;}
    public decimal Q3Rev {get;set;}
    public decimal Q4Rev {get;set;}
    public decimal Q1Cost {get;set;}
    public decimal Q2Cost {get;set;}
    public decimal Q3Cost {get;set;}
    public decimal Q4Cost {get;set;}
    public decimal Q1Profit {get;set;}
    public decimal Q2Profit {get;set;}
    public decimal Mean {get;set}
}

controllerCreate方法中

Yearly yearly = new Yearly
{
    Q1Rev = yearly.Q1Rev,
    Q2Rev = yearly.Q2Rev,
    Q3Rev = yearly.Q3Rev,
    Q4Rev = yearly.Q4Rev,
    Q1Cost = yearly.Q1Cost,
    Q2Cost = yearly.Q2Cost,
    Q3Cost = yearly.Q3Cost,
    Q4Cost = yearly.Q4Cost,
    Q1Profit = yearly.Q1Rev - Q1Cost,
    Q2Profit = yearly.Q2Rev - yearly.Q2Cost,
    Mean = (yearly.Q1Profit + yearly.Q2Profit) / 2
};

如何将计算添加到model 而不是controllerCreate 方法中?还是我应该把它留在controller 中?

【问题讨论】:

    标签: c# asp.net asp.net-core model-view-controller


    【解决方案1】:

    但我知道使用瘦控制器和胖模型是典型的方法。

    啊——不是吗?你到底是从哪里弄来的?

    模型仅用于表示视图的数据模型。它实际上可以被重用和组成部分。把它放到模型中是没有意义的。

    在字典中查找“模型”和“控制器”的定义。其中之一甚至没有暗示包含逻辑。

    在视图中可能有意义的唯一逻辑是纯粹的风格 - 即格式化输出之类的东西。

    我绝对不会将它们移到控制器中。也许是一些服务或业务类 - 如果,即它们是可重用的或验证它们自己的单元测试非常复杂(即财务计算通常有相当复杂的公式,您可能希望将它们保存在单独的对象中)。

    【讨论】:

    • 所以可能把计算放在一个单独的对象中,比如他们自己的类?然后在控制器中引用它?我问是因为如果我有多个控制器可以计算“平均值”,那么它似乎效率低下,必须在每个控制器中计算它。什么是最好的?
    • 是的。主要也是因为您希望它们能够在多个应用程序中重用(所以,不是类,考虑一个单独的项目)和测试(!)。
    猜你喜欢
    • 2023-03-20
    • 2010-12-15
    • 2017-08-08
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2016-01-11
    • 2020-03-15
    • 1970-01-01
    相关资源
    最近更新 更多