Это вопрос, который я размышлял довольно много, и ниже мой вывод. Я рад обсудить, всегда ли это имеет смысл или нет.
Принцип, который я использую: ваша модель должна иметь все поля, которые имеют смысл для законченного объекта.
В вашем случае это означает, что id
должен быть частью модели.
Обоснование этого:
- Когда вы манипулируете объектом, вы хотите полагаться на тот факт, что у вас есть полный объект , а не наполовину сформированный объект, который еще не сохранен в базе данных или чем-либо еще. В противном случае вы должны учитывать тот факт, что ваш объект может быть неполным в каждой операции (обновление и т. Д.)
- Имеет смысл, что данные, которые вы используете для создания объекта (запрос
POST
, который вы упомянули), это еще не объект , а просто данные инициализации. Иногда он может даже не отображаться на конкретные поля вашей модели, поэтому рекомендуется хранить их отдельно.
В вашем случае, у меня действительно было бы две модели: EnvironmentInitializeData
и EnvironmentModel
или как угодно, вы поняли.
Кстати, данные инициализации не всегда нужно выражать как тип, поскольку они часто используются только один раз и прямым способом.