Просто
Если у вас есть выделенная модель чтения, она обязательно должна иметь ProductID, а также ProductName и Category.
Почему?
Просто потому, что если кто-то запросит эту модель, скажем, некоторый клиентский интерфейс клиента или API-клиент без идентификатора, он не сможет отследить, какой именно продукт вы вернули, поскольку ProductName может быть одинаковым длянесколько продуктов.
В этом случае нужно ли добавить имя продукта и категорию к событию ProductCreated или создать другое событие с именем и категорией только для модели чтения?
Гадание по названию события ProductCreated - это событие, содержащее информацию о том, что Продукт был создан. Это действительно зависит от потребностей вашего бизнеса и вашего дизайна, но я бы предложил поместить всю информацию о модели продукта (по крайней мере, свойства, которые должны быть общедоступными) в событие ProductCreated. Это может быть ProductId, ProductName, ProductCategory и некоторые другие (если у вас есть что-то вроде ProductDescription, ProductCode и всего, что находится в модели Product).
Кто бы ни слушал это событие, он мог решить, хотят ли они сохранитьвся модель в их хранилище или просто подмножество этой модели. Это, конечно, основано на потребностях конкретного потребителя события.
Этот подход хорош, если у вас есть или у вас в будущем будет несколько потребителей публикуемого вами события. Если нет, и у вас есть только 1, вы можете удалить свойства, которые вам не нужны в модели чтения.
Заключение
Вам не нужна секундасобытие для передачи подмножества данных, как вы описали. Я бы посоветовал поместить все в событие ProductCreated, а затем в вашу модель чтения при обработке этого события сохранить только подмножество данных, которые вам там нужны.