مقدمه
اولین رویکرد کد چارچوب نهاد اجازه ایجاد کلاس های POCO و ایجاد یا تغییر پایگاه داده جدید یا موجود شما را می دهد. Entity Framework کنترل کاملی بر تولید و اصلاح جدول داده با استفاده از Database Initializers و Migration دارد. مهاجرت یک مفهوم بسیار مفید برای مدیریت انواع تغییرات طرحواره پایگاه داده است. با استفاده از Migrations می توانید به راحتی پایگاه داده جدید یا موجود را اضافه، به روز کنید، حذف کنید.
توضیحات
توسعه دهندگان همیشه در طول توسعه با چالش هایی روبرو هستند و در طول توسعه باید کلاس های مدل موجود خود را تغییر دهیم یا کلاس های مدل جدید اضافه کنیم، که ممکن است باعث عدم تطابق طرحواره ها با پایگاه داده موجود شود. در این مقاله قصد داریم مقداردهی اولیه دیتابیس و ویژگی های مختلف اولین مهاجرت کد Entity Framework را همراه با مثال مشاهده کنیم.
درک Initializers پایگاه داده
Entity Framework اولین رویکرد ایجاد پایگاه داده به طور خودکار بر اساس کلاس های POCO. به طور پیش فرض Database Initializers این رفتار را مدیریت می کند. Entity Framework دارای چهار پایه اولیه پایگاه داده است:
- CreateDatabaseIfNotExists
- DropCreateDatabaseWhenModelChanges
- DropCreateDatabaseAlways
- MigrateDatabaseToLatestVersion. MigrateDatabaseToLatestVersion به تازگی در نسخه EF 6.0 معرفی شده است.
کلاس CreateDatabaseIfNotExists
Default Database Initializer، مگر اینکه کلاس دیگری را اعلام کنید. همانطور که از نام آن پیداست، در صورت عدم وجود پایگاه داده جدید ایجاد می کند.
DropCreateDatabaseWhenModelChanges
این کلاس Database Initializer هر زمان که مدل داده ای تغییر کند کل پایگاه داده را رها کرده و دوباره ایجاد می کند. این کلاس در مرحله شروع توسعه زمانی که شما هیچ نگرانی با رکوردهای پایگاه داده موجود ندارید مفید است.
DropCreateDatabaseAlways
این کلاس همیشه پایگاه داده موجود شما را حذف می کند و هر بار که برنامه اجرا می شود پایگاه داده جدید ایجاد می کند. این Initializer زمانی مفید است که هر بار پایگاه داده تازه می خواهید.
MigrateDatabaseToLatestVersion
این اولیه سازهای پایگاه داده در Entity Framework نسخه 6.0 اضافه شده است. این اولیه برای به روز رسانی پایگاه داده به آخرین نسخه استفاده می شود. این اولیه ساز بسیار مفید برای به روز رسانی طرح پایگاه داده شما بدون حذف سوابق پایگاه داده شما است.
اگر میخواهید فراتر از کلاسهای اولیهساز پایگاه داده داخلی بروید، میتوانید کلاس تنظیمکننده پایگاه داده سفارشی خود را کدنویسی کنید.
کجا باید Initializers پایگاه داده را اعلام کنیم
اساسی ترین رویکرد این است که آن را در سازنده کلاس DbContext خود اعلام کنید.
StudentDbContext.cs
- public class StudentDbContext: DbContext
- {
- public StudentDbContext(): base("StudentDbContext")
- {
- Database.SetInitializer(new DropCreateDatabaseWhenModelChanges());
- }
- public DbSet < Student > Students
- {
- get;
- set;
- }
- public DbSet < Department > Departments
- {
- get;
- set;
- }
- }