در این قسمت باید پیاده سازی 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 است که در بخشهای بعدی آغاز خواهد شد.
دانلود سورس پروژه