В моем проекте ASP.NET MVC мои действия обычно вызывают уровень Service для получения данных. Я использую одинаковую дюжину POCO для всех моих моделей. Я также планирую использовать слой Service в консольных приложениях и, возможно, в какой-то момент выставлю веб-API.
Чтобы сделать операции с моей базой данных более эффективными, мой сервисный уровень увлажняет только те свойства в модели, которые относятся к конкретному методу (который в данный момент в основном определяется потребностями действий моего контроллера).
Так, например, у меня может быть класс Order
со свойствами Id, Name, Description, Amount, Items
. Для данного вызова службы мне может потребоваться только заполнить Id, Name, Items
. Потребитель этой услуги не обязательно будет знать, что Amount
равен 0 только потому, что он не заполняет свойство.
Аналогично, потребитель не будет знать, является ли Items
пустым, потому что на самом деле нет никаких элементов, или этот конкретный метод обслуживания просто не заполняет это свойство.
А для третьего примера, скажем, на одном из моих представлений отображается ItemCount
. Я не хочу полностью заполнять свою коллекцию Items
, мне просто нужно дополнительное свойство для моей "модели". Я не хочу добавлять это свойство в мой POCO, которое будут использовать другие методы обслуживания, потому что оно не будет заполнено где-либо еще.
Таким образом, естественным решением является создание POCO, разработанного специально для этого метода, только с этими тремя свойствами. Таким образом, потребитель может знать, что все свойства будут заполнены его реальными значениями. Недостатком этого является то, что я закончу писать тонны моделей одинаковой формы.
Какой совет, какой метод работает лучше всего?