QueryHandler
سلام وقت بخیر
ببخشید برای من سوال پیش اومده که چرا Repository هایی که پیاده سازی کردید رو به QueryHandler ها تزریق نمیکنید؟ و چرا Context رو بهشون تزریق میکنید و دوباره همون پیاده سازی های داخل Repository رو داخل QueryHandler پیاده سازی میکنید؟
پاسخ ها
محمد اشرافی
سلام
گفتیم که این Repository هایی که ساختیم برای Command هامونه و توی Query ها خیلی وقتا نیاز هایی داریم که Repository نمی تونه براوررده اش کنه و حالا بخاطر اینکه یک دست بشه لایه Query ، توی همه Handler ها از Conetxt استفاده میکنیم و حالا بهتر تر اینه که جای Context اصلی هم از یک Readonly Context استفاده بشه که دیگه توی لایه Query نشه تغییری توی دیتابیس اعمال کرد (اما باز هم مانع ای برای استفاده از Reposiory وجود نداره)
گورگیز الیه
پس توی این حالت ما میتونیم موارد اضافی رو از Repository حذف کنیم. درسته؟
یعنی توی یه پروژه واقعی بهتره که یا از طریق Query دیتا رو بخونیم یا Repository که کد هامون تکراری نشه. درست متوجه شدم؟
محمد اشرافی
ببینید لایه Query برای خوندن اطلاعات ه ، و هر ًQuery ای که قرار زده بشه روی دیتابیس و به کاربر اطلاعات نمایش بده باید از طریق این لایه اتفاق بیوفته
CommandRepository فقط برای عملیات Create Update Delete استفاده میشه ، حالا یه سری متد دیگه هم توش میزاریم که بتونیم این عملیات رو Handle کنیم ، مثل GetById و Exist ولی نباید به متد GetList یا IQueriable توش داشته باشید
----------------------------------
شما میتونید یه CommandRepository بسازید برای Command هاتون و یک QueryRespitory بسازید برای Query هاتون ولی به نظر من Repository به درد لایه Query نمیخوره
گورگیز الیه
بسیار عالی ممنون بخاطر وقتی که برای پاسخ گویی گذاشتید.