کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش مکانیزم Migration در Entity Framework Core

آموزش مکانیزم Migration در Entity Framework Core

مکانیزم Migration در Entity Framework Core در واقع راهی است برای sync کردن Database و مدل EF Core.


مکانیزم Migration  در Entity Framework Core

همانطور که در شکل بالا نشان داده ایم، EF Core API مدل EF Core model را از کلاس های دامین می سازد و EF Core migration شمای Database را براساس آن می سازد یا تغییر می دهد. هر زمان که در کلاس های دامین تغییری ایجاد کنید، باید migration انجام دهید تا Database آپدیت شود.

Migration ها در EF Core مجموعه ای دستور است که می توانید در NuGet Package Manager Console یا در dotnet CLI اجرا کنید.

جدول زیر لیست مهم ترین دستورات migration را در EF Core نشان می دهد:


PMC Command
dotnet CLI command
کاربرد
add-migration < migration name >
Add
ایجاد یک migration با افزودن یک migration snapshot
Remove-migration
Remove
حذف آخرین migration snapshot
Update-database
Update
بروزرسانی Database بر اساس آخرین migration snapshot
Script-migration
Script
ساخت SQL script بر اساس آخرین migration snapshot ها

می خواهیم این دستورات را با جزئیات بررسی کنیم:

افزودن یک Migration

در ابتدای شروع ساخت یک application، کلاس های دامین خود را می سازید. در این نقطه Databaseی وجود ندارد. اول باید یک migration بسازید.

در برنامه Visual Studio از مسیر Tools -> NuGet Package Manager -> Package Manager Console، کنسول Package Manager Console را باز کنید. دستور زیر را برای افزودن یک migration اجرا کنید:


PM> add-migration MyFirstMigration

اگر از dotnet CLI استفاده می کنید دستور زیر را اجرا کنید:


> dotnet ef migrations add MyFirstMigration

در دستورات بالا، MyFirstMigration نام یک migration است. این دستور سه فایل در پوشه ی migrations در پروژه ایجاد می کند:


مکانیزم Migration  در Entity Framework Core
  1. < timestamp >_< Migration Name >.cs: فایل اصلی migration که حاوی عملیات های migration در متدهای UP() و Down() است. متد UP() شامل کدهایی برای ایجاد DB object ها و متد Down() شامل کدهایی برای حذف DB object هاست.
  2. < timestamp >_< Migration Name >.Designer.cs: فایل حاوی migrations metadata که EF Core از آن استفاده می کند.
  3. < contextclassname >ModelSnapshot.cs: یک snapshot از مدل فعلی که برای تشخیص تغییرات در migration بعدی استفاده می شود.

حال پس از ساخت یک migration snapshot، وقت آن رسیده که Database را ایجاد کنیم.

ایجاد یا تغییر Database

از دستور زیر برای ایجاد یا تغییر Database استفاده کنید:


//Package Manager Console
PM> Update-Database


//CLI
> dotnet ef database update

دستور Update براساس context و کلاس های دامین و migration snapshot یک Database می سازد. اگر این اولین migration باشد، جدولی به نام __EFMigrationsHistory نیز می سازد که حاوی نام migration و زمان اعمالشان روی Database است.


مکانیزم Migration  در Entity Framework Core

حذف یک Migration

می توانید آخرین Migration را اگر هنوز به Database اعمال نشده باشد، حذف کنید. از دستورهای زیر برای پاک کردن فایل های Migration و برگرداندن model snapshot به وضع قبلی استفاده کنید:


Package Manager Console
PM> remove-migration


CLI
> dotnet ef migrations remove

توجه کنید اگر Migration به Database اعمال شده باشد، دستور بالا exception زیر را ایجاد می کند:


The migration < migration name > has already been applied to the database. Revert it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration

برگرداندن یک migration

فرض کنید کلاس های دامین را تغییر داده ایم و یک migration جدید به نام MySecondMigration با اجرای دستور add-migration ساخته ایم و آن را با دستور Update روی Database اعمال کرده ایم. اما به هر دلیلی می خواهیم Database را به حالت قبل از اعمال migration برگردانیم. دراین صورت از دستور update-database < migration name> برای برگرداندن Database به migration snapshot مشخص شده قبلی استفاده کنید:


Package Manager Console
PM> Update-database MyFirstMigration


CLI
> dotnet ef database update MyFirstMigration.

دستور بالا Database را بر اساس migration با نام MyFirstMigration تغییر می دهد و همه تغییرات اعمال شده در MySecondMigration را حذف می کند. رکورد MySecondMigration در جدول __EFMigrationsHistory نیز حذف می شود.

این دستور فایل های migration مربوط به MySecondMigration را پاک نمی کند. از دستور remove برای حذف آن ها از پروژه تان استفاده کنید.

ساخت یک SQL Script

برای ساخت یک SQL Script از Database دستور زیر را اجرا کنید:


Package Manager Console
PM> script-migration


CLI
> dotnet ef migrations script

دستور بالا اسکریپتی برای همه ی migration ها ایجاد می کند. می توانید migration ها را با گزینه های -to و -from محدود کنید.


  • در PMC با دستور Get-Help entityframework می توانید درمورد دستورها راهنمایی بگیرید.
  • در dotnet CLI نیز از دستور dotnet ef –help برای راهنمایی گرفتن درمورد دستورها استفاده کنید.

برای استفاده از .NET CLI فایل .csproj را در پروژه تان ویرایش کنید و در زیر < ItemGroup > node کد زیر را اضافه کنید:


< DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />

سپس CMD را باز کنید و به پوشه ی root پروژه تان بروید. حال می توانید دستورات dotnet CLI را اجرا کنید.

1398/06/28 5276 0
نظرات شما

نظرات خود را ثبت کنید...