
یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شیگرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفهای و امکانات کامل!
مشاهده بیشتر
یادگیری MVC Core از مبانی تا پیشرفته: شیگرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژههای کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!
مشاهده بیشترمشخصات مقاله
آموزش انتقال خودکار (Automated Migration)
آموزش انتقال خودکار (Automated Migration)
Entity framework 4.3، Automated Migration را معرفی کرده است به طوری که برای هر تغییری که در کلاس های Domain ایجاد می کنید نیازی ندارید Migration پایگاه داده را به صورت دستی در code file ذخیره کنید، شما فقط نیاز به اجرای یک دسنور در Package Manger Console دارید.
بیایید ببینید که چگونه شما می توانیداز automated migration استفاده کنید.
همانطور که می دانید، زمانی که شما شروع به نوشتن برنامه Code-First می کنید نیازی به پایگاه داده ندارید.برای مثال، ما شروع به نوشتن یک برنامه با کلاس های Student و Course می کنیم. قبل از اجرای برنامه ای که پایگاه داده ندارد، شما باید برای فعال کردن automated migration با اجرای دستور ‘enable-migrations’ در Package Manager Console اقدام کنید.
اول، package manager console را از Tools را بازکنید -- > Library Package Manager -- > Package Manager Console و سپس دستور "enable-migrations –EnableAutomaticMigration:$true" را اجرا کنید. (اطمینان پیدا کنید که پروژه پیش فرض ، پروژه ای است که کلاس context را دارد)

هنگامی که دستور با موفقیت اجرا شود، یک کلاس با پیکربندی داخلی در پوشه Migration در پروژه تان ایجاد می شود.

اگر شما این را باز کنید و کلاس نشان داده شده در پایین را مشاهده کنید : این عبارت AutomaticMigrationsEnabled = true را در سازنده خواهید دید.
internal sealed class Configuration : DbMigrationsConfiguration { public Configuration() { AutomaticMigrationsEnabled = true; } protected override void Seed(SchoolDataLayer.SchoolDBContext context){ // This method will be called after migrating to the latest version. // You can use the DbSet.AddOrUpdate() helper extension method // to avoid creating duplicate seed data. E.g. // // context.People.AddOrUpdate( // p => p.FullName، // new Person { FullName = "Andrew Peters" }، // new Person { FullName = "Brice Lambson" }، // new Person { FullName = "Rowan Miller" } // ); // } }
همین طور که شما در کلاس Context راه انداز پایگاه داده را با استراتژی DB یعنی MigrateDatabaseToLatestVersion باید ست کنید.
public class SchoolDBContext: DbContext { public SchoolDBContext(): base("SchoolDBConnectionString") { Database.SetInitializer(new MigrateDatabaseToLatestVersionSchoolDataLayer.Migrations.Configuration>("SchoolDBConnectionString")); } public DbSet Students { get; set; } public DbSet Courses { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); } }
همان طور که در کد نشان داده شده بالا مشاهده می کنید، اسم کلاس و پیکربندی را به همراه اسم کلاس Context را pass کردیم.
اکنون شما automated migration را تنظیم می کنید. این به طور خودکار از migration هنگامی که مدل را تغییر می دهید محافظت می کند. برنامه را اجرا کنید و پایگاه داده را مشاهده کنید.

یک سیستم جدولی ایجاد شده است – جدول MigrationHistory همراه با دیگر جدول ها. خوب این جایی است automated migration تغییرات پایگاه داده را حفظ می کند.
اکنون یک کلاس استاندارد ایجاد می کنیم.دوباره برنامه اجرا کنید، خواهید دید که به طور خودکار یک جدول Standard ایجاد شده است.
اگر شما یک کلاس جدید اضافه کنید یا آن را حذف کنید، برنامه کار خواهد کرد اما در مورد اضافه کردن یا حذف خصوصیات از کلاس چطور؟ اگر آن را امتحان کنید و مشخصه Description را از کلاس Standard حذف کنید و برنامه را اجرا کنید. یک خطا روی خواهد داد.

این خطا به خاطر این است که شما ستون description را از دست خواهید داد، اگر شما آن را از کلاس Standard حذف کنید. بنابراین برای کنترل این موارد شما باید در کلاس سازنده AutomaticMigrationDataLossAllowed = true قرارداده و همین طور AutomaticMigrationsEnabled = true را قرار دهید.
توجه:برای اطلاعات بیشتر در مورد پارامترهایی که می توانیم برای فعال کردن دستورات migrations ارسال کنیم می توانید از دستور "get-help enable-migrations" استفاده کنید.برای اطلاعات بیشتر به قسمت use "get-help enable-migrations –detailed" مراجعه کنید.
بدین صورت migration ها می توانند به طور خودکار کنترل شوند.