ASP. NET CORE Добавление бизнес-логики c в модель вместо контроллера - PullRequest
0 голосов
/ 19 марта 2020

В ASP. NET CORE У меня есть логика c и расчеты в моем 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}
}

В методе Create controller

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, а не в метод Create из controller? Или я должен оставить это в controller?

1 Ответ

1 голос
/ 19 марта 2020

но я знаю, что наличие тощих контроллеров и толстых моделей - типичный подход.

Ах - НЕТ? Откуда, черт возьми, вы это взяли?

Модель существует ТОЛЬКО для представления модели данных представления. Это на самом деле МОЖЕТ быть использовано повторно и составлено по частям. Не имеет смысла вводить это в модель.

Посмотрите определения "модель" и "контроллер" в словаре. Один из них даже не является намеком на содержание logi c.

Единственный logi c, который может иметь смысл в представлении, - это просто viewi sh по стилю - т.е. форматирование вывода.

Я бы определенно НЕ переместил их в контроллер. Может быть, какой-нибудь серв ie или бизнес-класс - если, т.е. они многократно используются или настолько сложны для проверки своих собственных модульных тестов (т. Е. Финансовые расчеты часто имеют довольно запутанные формулы, которые вы, возможно, захотите хранить в отдельном объекте).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...