Плохо ли иметь некоторые общие методы в объектах POCO?

#asp.net-mvc-3 #poco #ef-code-first

#asp.net-mvc-3 #poco #ef-code-first

Вопрос:

Плохой ли дизайн иметь некоторые общие функции в объектах POCO в Asp.NET Проект MVC 3 EF CF? Допустим, мне нужна функция для получения кода следующей записи, сгенерированного свойствами сущности :

 public class Warehouse  {
    public string ReceivingRecordCodeFormat { get; set; }
    public int ReceivingRecordCodeNextNumber { get; set; }

    #region functions

    public string GetNextReceivingRecordCode()
    {
        return ...
    }

    #endregion
}
  

Ответ №1:

Я предлагаю сделать POCOs как можно более простым и создать уровень обслуживания для подобных методов.

Ответ №2:

Хотя я согласен с maxlego в том, что классы POCO должны быть как можно более простыми, я не уверен, что объектами EF Code First должны быть POCOs.

Моя практика заключается в том, чтобы включать логику, которая влияет только на одну сущность в этом классе сущностей. Особенно, если эти методы могут вызываться из нескольких служб (или нескольких контроллеров, если вы используете их в качестве своего сервисного уровня). В противном случае вашим службам придется обращаться к другим службам, что приводит к тесной связи между службами и проблемам с циклическими ссылками, если вы используете какой-либо контейнер IoC.

Правильная установка логики в объекте имеет наилучший потенциал для повторного использования без необходимости повторять код в нескольких местах.

Для логики, которая включает в себя набор сущностей, я использую сервис, а не пытаюсь сделать это со статическими методами в классе сущностей.

Я также предлагаю использовать модели представления POCO и не передавать ваши объекты EF непосредственно в представления, особенно если вы начнете добавлять к ним логику.