✅ DTO در مقابل Entity در .NET

✅ DTO در مقابل Entity در .NET


🧩 Entity (موجودیت)

  • نمایانگر مدل پایگاه داده است
  • به‌صورت مستقیم به یک جدول در دیتابیس نگاشت می‌شود (از طریق EF Core)
  • شامل تمام فیلدهای جدول است
  • عمدتاً برای ذخیره‌سازی و ماندگاری داده (Data Persistence) استفاده می‌شود
  • ایمن نیست که مستقیماً در اختیار کلاینت (Client) قرار بگیرد

📦 DTO (Data Transfer Object)

شیء انتقال داده

  • یک شیء سبک (Lightweight) برای انتقال داده‌ها
  • فقط شامل فیلدهای موردنیاز است
  • مخصوص درخواست‌ها و پاسخ‌های API طراحی شده است
  • باعث بهبود امنیت و کارایی (Performance) می‌شود
  • منطق کسب‌وکار را از لایه ذخیره‌سازی داده جدا (Decouple) می‌کند
  • اعتبارسنجی (Validation): DTOها می‌توانند Attributeهای اعتبارسنجی داشته باشند

❓ چرا به‌جای Entity از DTO استفاده کنیم؟

  • 🔐 امنیت: مخفی‌کردن فیلدهای حساس (مثل PasswordHash)
  • کارایی: انتقال فقط داده‌های ضروری
  • 🧩 انعطاف‌پذیری: امکان داشتن DTOهای مختلف برای Endpointهای مختلف API
  • 🔄 جداسازی (Decoupling): جلوگیری از ایجاد تغییرات مخرب در API هنگام تغییر ساختار دیتابیس
  • اعتبارسنجی: DTOها می‌توانند قوانین Validation را در خود داشته باشند