چرا ما در کنترلرها، خود مدل رو به ویو پاس میدیم، در این صورت همون طور که در زمان 1:15 ویدیو اشاره شد، در ویو امکان زدن کوئری و کال کردن متدهای where و ... امکان پذیره!
بهت نیست که entity بسازیم؟
سلام،
بله درسته و راههای دیگری مثل Repository Pattern و Service Layer هم کمک میکنه.
اگه توی ویو مستقیم کوئری بزنیم و مدل رو صدا بزنیم، کد غیرقابل نگهداری میشه، اصل Separation of Concerns نقض میشه و حتی ممکنه مشکل N+1 پیش بیاد. ویو فقط باید مسئول نمایش باشه و نباید کاری به بیزینس لاجیک داشته باشه و کنترلر هم فقط دیتا رو از مدل یا سرویس میگیره و تحویل ویو میده. اینجوری وابستگی لایهها کم میشه و اصول سالید مثل SRP و OCP و DIP هم نقض نمیشه، چون هر لایه وظیفه مخصوص خودش رو انجام میده و نیازی نیست برای تغییر توی مدل، دست به کد ویو ببریم.