Я думаю, что у вас есть правильные представления о различиях между сущностями и типами значений в том смысле, в каком они понимаются в рамках доменного дизайна (хотя я далеко не эксперт в этом вопросе - возможно, лучше сказать, что вы соответствуете моему пониманию этих концепций) , Однако я бы не советовал использовать это в качестве решающей метрики при выборе, моделировать ли эти объекты как ссылку или значение в C #.
Ключевое различие между значением и ссылочным типом заключается в том, что типы значений копируются при передаче в метод. Это означает, что они с большей вероятностью будут сидеть в стеке, а не в куче, и их обход обходится дороже; как таковой размер становится фактором для рассмотрения. Рекомендуется, чтобы структура была размером не более 16 байт (внизу примечаний здесь ) и имела комплексную структуру адресов (номер дома, название дома, район улицы, город, страна и т. Д.) легко сломать это.
Тем не менее, семантика entity: value :: class: struct очень похожа, и я вижу много преимуществ от моделирования данных таким способом (два человека, которые живут по одному и тому же адресу, не поделиться этим адресом, так как изменение адреса одного человека не должно менять адрес другого. Таким образом, наличие адреса в качестве структуры приведет к такому разделению. При этом все экземпляры лица в приложении должны указывать на одного и того же человека). Но есть соображения производительности и памяти. Возможно, неизменяемые классы подойдут для этих типов значений?
Подводя итог: Различие между сущностью и значением в DDD основано на том, что представляет собой объект. Код должен основываться на том, что вы собираетесь с ним делать.