CodeShot
Seniorسختی 3 از ۵· در 62٪ مصاحبه‌های این حوزه پرسیده شده

چرا در Onion Architecture لایه Domain نباید مستقیماً به EF Core وابسته باشد؟

نشان کردن

پاسخ کوتاه

چون در این صورت هسته کسب‌وکار به یک فناوری خاص قفل می‌شود و تغییر ORM یا تست‌نویسی بدون دیتابیس واقعی سخت می‌شود.

پاسخ کامل

اگر Domain مستقیماً از کلاس‌های EF Core (مثل DbContext) استفاده کند، هرگونه تغییر در لایه Infrastructure (مثلاً مهاجرت به Dapper) لایه Domain را هم درگیر می‌کند. راه‌حل این است که Domain فقط Interface تعریف کند و پیاده‌سازی وابسته به EF Core در لایه Infrastructure نوشته شود.

اشتباه رایج

❌ استفاده مستقیم از DbSet<T> یا DbContext داخل کلاس‌های Domain.