QueryHandler

سوال شده توسط: گورگیز الیه

تاریخ ثبت: ۱۴۰۰/۱۲/۲۷

بازدید: 202

پاسخ: 4

تگ: Asp.net Core


سلام وقت بخیر
ببخشید برای من سوال پیش اومده که چرا Repository هایی که پیاده سازی کردید رو به QueryHandler ها تزریق نمیکنید؟ و چرا Context رو بهشون تزریق میکنید و دوباره همون پیاده سازی های داخل Repository رو داخل QueryHandler پیاده سازی میکنید؟

پاسخ ها
user

محمد اشرافی

سلام

گفتیم که این Repository هایی که ساختیم برای Command هامونه و توی Query ها خیلی وقتا نیاز هایی داریم که Repository نمی تونه براوررده اش کنه و حالا بخاطر اینکه یک دست بشه لایه Query ، توی همه Handler ها از Conetxt استفاده میکنیم و حالا بهتر تر اینه که جای Context اصلی هم از یک Readonly Context استفاده بشه که دیگه توی لایه Query نشه تغییری توی دیتابیس اعمال کرد (اما باز هم مانع ای برای استفاده از Reposiory وجود نداره)

user

گورگیز الیه

پس توی این حالت ما میتونیم موارد اضافی رو از Repository حذف کنیم. درسته؟
یعنی توی یه پروژه واقعی بهتره که یا از طریق Query دیتا رو بخونیم یا Repository که کد هامون تکراری نشه. درست متوجه شدم؟

user

محمد اشرافی

ببینید لایه Query برای خوندن اطلاعات ه ، و هر ًQuery ای که قرار زده بشه روی دیتابیس و به کاربر اطلاعات نمایش بده باید از طریق این لایه اتفاق بیوفته

CommandRepository فقط برای عملیات Create Update Delete استفاده میشه ، حالا یه سری متد دیگه هم توش میزاریم که بتونیم این عملیات رو Handle کنیم ، مثل GetById و Exist ولی نباید به متد GetList یا IQueriable توش داشته باشید

----------------------------------

شما میتونید یه CommandRepository بسازید برای Command هاتون و یک QueryRespitory بسازید برای Query هاتون ولی به نظر من Repository به درد لایه Query نمیخوره

user

گورگیز الیه

بسیار عالی ممنون بخاطر وقتی که برای پاسخ گویی گذاشتید.

برای ثبت پاسخ باید خود شوید

محبوب ترین مقالات