• بررسی منطق Repository Pattern و شکل پیاده سازی آن در یک پروژه ASP.NET MVC قسمت سوم
بررسی منطق Repository Pattern و شکل پیاده سازی آن در یک پروژه ASP.NET MVC قسمت سوم
1395/02/15 - 11:06:59 // DataBase and Design Pattern // 1 نظر // 4925 بازدید

در این قسمت باید پیاده سازی Unit of Work را به پایان برسانیم تا بتوانیم در یک پروژه MVC از کل لایه های ایجاد شده استفاده کنیم.

بسمه تعالی

بررسی منطق Repository Pattern و شکل پیاده سازی آن در یک پروژه ASP.NET MVC قسمت سوم

در این قسمت باید پیاده سازی Unit of Work را به پایان برسانیم تا بتوانیم در یک پروژه MVC از کل لایه های ایجاد شده استفاده کنیم.

ابتدا باید به اینترفیس IunitOfWork نگاهی بیندازیم.

این Interface از یک IDisposeable ارث بری کرده است و Repository های ما در آن معرفش شده اند.یک متد Complete هم مطابق آنچه قبلن صحبت شد ، وجود دارد.

خوب حالا به سراغ پیاده سازی این Interface در Unitofwork Class خواهیم رفت.

همانطور که مشاهده میکنید یک Instant از Context ایجاد شده و بین همه اعضا مشترک است و درون متد Complete یک SaveChanges داریم . متد Disposeهم که به سادگی سبب آزاد شدن حافظه از مقادیر در موقع خود خواهد شد.

خوب حالا باید دید چگونه میتوان از همه آنچه ساخته شده در یک پروژه استفاده کرد . مثلن در یک Console Application

در تصویر بالا میبینید که چگونه بر اساس یک ID یک Course را دریافت میکنیم. مهم بیشتر قسمت سوم است که نشان میدهد چگونه میتوان یک نویسنده را پیدا کرد، سپس همه درسهای او را حذف و پس از آن خودش را هم حذف کرد و در آخر متد Complete را صدا زد تا تغییرات اعمال شود . این چیزی است که از UnitofWork انتظار داریم.

نکته : اولن نگران کدها نباشید ، بخشی از اینها حفظ کردنی نیست و یک Template است و باید در پروژه ها فقط جایگزاری شود . دوما در قسمت بعدی همه چیز در سطح یک پروژه MVC شرح داده خواهد شد و از آن استفاده خواهیم نمود.

به تصویر بالا دقت کنید . سه لایه مختلف شامل Presentation، Business Logic و DataAccess وجود دارد . در لایه اول Form و ViewModel و Controller داریم . قسمت Business Logic فقط حاوی Interface ها است و درDataAccess پیاده سازی Interface ها را در اختیار داریم.

خوب ، بر اساس آنچه گفته شد و با توجه به اینکه یکسری مباحث مانند Entity FrameWork دیگر در حوصله این سری مقالات نیست ، اجازه بدهید قبل از ورود و ایجاد یک پروژه MVC جهت استفاده از Repository ، نگاهی به آنچه تابحال آماده کرده این بیندازیم.

در سطح این پروژه 3 فولدر اصلی به نامهای Core ، Migration و Persistence وجود دارد.

1- فولدر Core

این فولدر حاوی یک فولدر دیگر به نام Domain بوده و در بر گیرنده Entity ها مانند Course و ... میباشد . در اصل بر اساس Code First در اینجا Table ها به صورت کلاس تعریف شده اند.

درون این فولدر یک فولدر دیگر به نام Repository هم داریم Interface و پیاده سازی کلاس Repository درون آن قرار دارد. تقریبا میتوان گفت ، همه Inferface ها اینجا قرار دارند .

2- Migration

وضعیت Migration مشخص است و در مباحثی که در مورد Core 1 داشتیم هم به خوبی شرح داده شد .منظورم این قسمت است

http://iliasoft.ir/p.aspx?name=Post&ID=152

3- Persistence

این فولدر کلن حاوی پیاده سازیها میباشد . خود DbContext و Repository ها و تنظیمات EF درون این فولدر قرار دارند .

خوب اگر در اصل Entity FrameWork مشکل خاصی نداشته باشید ، باید مشکلتان با Repository Pattern هم حل شده باشد . البته Repository ربطی به EF ندارد و در بسترهای دیگر هم قابل استفاده است . هدف پایانی ما استفاده از Repository در یک پروژه واقعی MVC است که در بخشهای بعدی آغاز خواهد شد.

دانلود سورس پروژه

علی کلاهدوزان
معرفی نویسنده : علی کلاهدوزان

سلام بر دوستان ،
شاید رایج است به عنوان پروفایل کاربر ، چند خطی راجع به خودم بنویسم ، ولی وضعیت کاری و سوابق من با یک جستجوی ساده در گوگل مشخص خواهد شد ، لذا سرتان را با مطالب بی مورد به درد نیاورم بهتر است . اگر نکته خاصی لازم بود بدانید در قسمت "ایلیا سافت در یک نگاه" به احتمال زیاد یافت خواهد شد . جزئیات بیشتر را سوال کنید ، آدرس ایمیل Ali@Kolahdoozan.com همیشه جوابگوی شماست .امیدوارم از مطالب سایت استفاده کرده باشید . شاد و پیروز باشید .

امتیاز به مطلب
           
نظرات کاربران
  • فرشید علی اکبری
    1395/02/15 - 14:23:34

    0
    0
    سلام و روزتون بخیر مهندس جان کارتون خیلی درسته، پیاده سازی UOW در MVC رو خیلی خوب و شفاف و ساده توضیح دادید. تشکر از شما.
     
    ----
    پاسخ : شاید به زودی اتفاقات جالبتری بیفنتد !. 
ارسال نظر