• آموزش یک پروژه ASP.NET MVC 5 از ابتدا تا انتها – سیستم ویدئو کلوپ – بخش پانزدهم
آموزش یک پروژه ASP.NET MVC 5 از ابتدا تا انتها – سیستم ویدئو کلوپ – بخش پانزدهم
1395/04/10 - 00:04:57 // MVC 5 & 6 // 2 نظر // 6248 بازدید

میدانیم که در طی استفاده از Entity FrameWork با رویکرد Code First ، ممکن است بارها و بارها بر اساس نیازمندیهای پروژه لازم باشد یک یا چند کلاس که در اصل نماینده یک جدول است اضافه یا کم شود یا درون کلاسهای موجود یک فیلد اضافه یا حذف گردد. اینجاست که باید توجه کرد که این تغییرات باید درون دیتابیس ما اعمال شود و برای در اختیار داشتن این امر ، ایجاد و اجرای Migration الزامی میباشد.

بسمه تعالی

آموزش یک پروژه ASP.NET MVC 5 از ابتدا تا انتها سیستم ویدئو کلوپ بخش پانزدهم

میدانیم که در طی استفاده از Entity FrameWork با رویکرد Code First ، ممکن است بارها و بارها بر اساس نیازمندیهای پروژه لازم باشد یک یا چند کلاس که در اصل نماینده یک جدول است اضافه یا کم شود یا درون کلاسهای موجود یک فیلد اضافه یا حذف گردد. اینجاست که باید توجه کرد که این تغییرات باید درون دیتابیس ما اعمال شود و برای در اختیار داشتن این امر ، ایجاد و اجرای Migration الزامی میباشد.

خوب بریم ببینیم چه باید کرد. ابتدا باید وارد Package Manager Console شویم. مسیر یافتن این Menu Item به شکل .

خواهد بود . وقتی برای اولین بار قصد استفاده از Migration را داریم ، باید آنرا فعال کنید. دستور زیر این کار را انجام خواهد داد.

enable-migration

با اجرای این دستور ، Migration در سطح Solution شما فعال خواهد شد . اگر این دستور برای سیستم شناخته شده نبود، قبل از آن باید با استفاده از دستور

Install-Package EntityFramework

کلن EF را برای پروژه خود فعال کنید در صورت موفق بودن روند فعالسازی Migration ، با پیامی مشابه زیر روبرو می شوید.

خوب حالا یک سری به Solution Explorer بزنید و در آنجاست که مشاهده میکنید که یک فولدر جدید به نام Migrations درون آن ایجاد شده است.

خوب حالا باید اولین نسخه از Migration را ایجاد نماییم. مشابه زیر عمل کنید.

add-migration InitialModel

قسمت قرمز رنگ یک نام دلخواه است که من برای اینکه مشخص شود در مرحله ابتدایی بوده ام ، نام آنرا InitialModel گذاشتم. با اجرای آن باید نتیجه به شکل زیر گردد.

حالا باز نگاهی به Solution Explorer بیندازید.

اگر به محتوای این کلاس ساخته شده دقت کنید ، خواهید دید که یکسری جدول Role و ... هم برای ما ایجاد کرده که متعلق به بحث لاگین و ... می باشد و بعدا در موردش صحبت خواهیم نمود. کلاسهای مرتبط را در فولدر Model میتوانید مشاهده کنید.

اگر به مباحث اولیه دقت کرده باشید ، Dbset نماینده هر جدول در EF می باشد ولی در پروژه من هنوز برای Customer و ... هنوز جدولی و در اصل هیچDbSet وجود ندارد . حال باید درون IdentityModelsبرای این Object ها هم DbSet بسازیم. مشابه زیر عمل کنید.

خوب حالا باید باز یک Migration جدید انجام شود.

add-migration InitialModel -force

چون این نام قبلا وجود داشت از پارامتر force هم استفاده کردیم.

خوب حالا میبینید که Customer هم ایجاد شده است.

فیلدهای جدول هم قابل مشاهده است .

بر اساس کلاس و خواصی که می سازیم ، این بخشها تولید خواهد شد. حالا باید دیتابیس را بر اساس همین تنظیمات ایجاد کنیم. دستور زیر را در Package Manager استفاده کنید.

update-database

و نتیجه باید به شکل زیر شود.

اگر در Solution Explorer بروید و Show All Files را بزنید ، دیتابیس ایجاد شده را هم میبینید .

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

به جدولی به نام Migration history دقت کنید. این جدول ورژن و وضعیت دیتابیس و محتوای آنرا کنترل میکند و در هر بار DataBase Update توسط Migration اصولن Update خواهد شد.

حالا دیگر یاد گرفتید چگونه کلاسهای خود را با رعایت قواعد ایجاد و درون SQL Server آنها را ایجاد نمایید.در بخش بعدی Model را تغییر میدهیم و کار را پی میگیریم.

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

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

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

امتیاز به مطلب
           
نظرات کاربران
  • ناشناس
    1395/04/11 - 05:27:46

    0
    0
    سلام، استفاده از حالت اتوماتیک ساده تر نیست؟
     
     
    --
    شاید باشد. شاید نباشد. به هر حال باید یکسری ریزه کاریها را دانست. شده است که حالت اتوماتیک در جاهایی جواب ندهد. مهم این است که این مباحث را بدانیم. 
  • فرجام
    1395/04/27 - 20:20:52

    0
    0
    دمتون گرم مهندس.قسمت های بعدی کی آماده میشه؟
     
     
    معلوم نیست . کمی بی انگیزه و مقداری گرفتار شده ام.  
ارسال نظر