سلام خدمت دوستان

در حال حاضر در حال یادگیری معماری CQRS و الگوی DDD هستم. در خصوص این موضوعات مبحث ValueObjectها بسیار برام سوال ایجاد کرده:
  1. اگر قرار باشه که یک Entity و یا Aggregate داشته باشم که تعدادی Property داشته باشه قطعا هیچ یک از Propertyها بدون Business نیستند. حتی Description هم یک MaxLength باید داشته باشه.
  2. با توجه به آیتم شماره 1، آیا باید بجای استفاده از Primitive Typeها در یک Entity حتما از Value Object استفاده کرد؟
  3. همچنین در Map کردن یک DTO به یک Entity آیا میشه از AutoMapper و یا کتابخانه های دیگه استفاده کرد؟ البه آنچه که در یک آموزش دیدم جهت انجام این تبدیل یک Extension Method ایجاد کرده بود و در واقع Mapping را در این Extension نوشته بود چراکه در جایگذاریِ مقدار یک DTO در یک Entity از Value Objectها استفاده کرده بود و این کار کمک می کرد که مجددا همان Validation موجود در Value Object اجرا بشه و در صورت هرگونه خطا، همان Exceptionها در برنامه throw بشه. گویا همه جنبه های مورد نیاز یک Property یکبار تحت عنوان Value Object پیاده سازی شده است.
  4. یکی از جذابیت های Extension برای من زمانی بود که مقدار برگشتی از بانک را قبل از اینکه متد ToList را صدا بزنم براحتی بعد از متد Select پارامتر این متد را به Extension Method تبدیل کردم و دیگر نیازی نبود که تک تک Propertyها را در متد Select مقدار دهی کنم و یا اینکه مقدار برگشتی را در خط بعدی map کنم.
  5. سوال مهمتر اینه که آیا پیشنهاد میشه که جهت تسریع کار ابتدا از Primitive Typeها استفاده کنیم و به مرور زمان Business سمت Domain را تکمیل کنیم؟


ممنون میشم اگر دوستان تجربه خودشان را به اشتراک بگذارند.
تشکر