مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

sofalxadeh

عضویت از 1393/05/03

متد Update هنگام استفاده از UnitOfWork

  • جمعه 11 مرداد 1398
  • 20:30
تشکر میکنم

سلام

خیلی جاها نوشته که نباید متد های Save و Update رو در کلاس Repository ساخت، و باید این متدها در کلاس UOW باشن

حالا فرض کنید من یه پروژه دارم که شامل چندین DbContext هست. حالا چطوری متوجه بشم اون Entity که باید آپدیت بشه. مربوط به کدوم Context هست؟

یا من باید به ازای هر Context یه متد Update بنویسم؟

ممنون

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

  • شنبه 12 مرداد 1398
  • 07:32

سلام

فرض اول شما را اولین بار است که می شنوم!!!!

چرا نبید ذخیره و ویرایش را در ریپوزیتوری ساخت؟؟!!! اشکالش کجاست؟!!؟

مدت هاست دارم داخل ریپوزیتوری از این کارها می کنم والا که مشکلی هم وجود نداشته!

کاربر سایت

sofalxadeh

عضویت از 1393/05/03

  • شنبه 12 مرداد 1398
  • 18:24

یه نمونه :


another very common mistake! your repositories should not have a Save() or Update() method.
I repeat: think of a repository as a collection of domain objects in memory.
Do collections have a Save() or Update() method? No!

کاربر سایت

محمد اردوخانی

عضویت از 1396/05/17

  • دوشنبه 14 مرداد 1398
  • 08:57

با سلام خدمت شما دوست عزیز

ببینین این مسئله برمیگرده به نوع معماری و ساختاری که شما در نظر میگیرین.

هدف اصلی UnitOfWork میشه گفت Share کردن Context هستش پس میشه گفت اگر متد های اصلی Save و Update در این لایه قرار بگیرن مشکلی پیش نمیاد. البته دلیل این حرفم هسته ی اصلی .NET Core هستش که بازنویسی شده و در این امر کمک میکنه. اما از طرف دیگه هدف اصلی لایه ی Repository اعمال عملیات اصلی روی دیتا بیس هستش.

تصور کنین پس از مدتی Provider شما تغییر پیدا کرد. مسلما در کنار تغییر در لایه ی Repository مجبور هستین تا لایه ی UnitOfWork خودتون رو هم تغییر بدین که این یعنی Dependency و در اصل کل معماری شما زیر سوال میره

پیشنهاد من به شما اینه که Repository خودتون رو به صورت کامل پیاده سازی کنین

موفق باشین

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)