روش بهینه سازی شده تنظیم پایگاه داده در نسخه ۲.۱.۰
Database Initializer
Database
Initializer همانطور که از نامش پیداست، به شما کمک میکند پایگاه داده
پَرباد را به هر صورتیکه در نظر دارید راه اندازی کنید.
هدف از افزودن Database Initializer ها
از آنجایی که Entity Framework، پایگاههای داده زیادی را پشتیبانی میکند و
هر کدام از آنها دارای شرایط، ویژگیها و محدودیت های خاص خود
هستند، شما
میتوانید پایگاه داده مورد نظر خود را آنطور که در نظر دارید ایجاد کنید.
برای مثال پایگاه داده Sqlite طبق اعلام خود تیم Entity Framework دارای
محدودیتهایی برای Migration است. به همین دلیل این پایگاه داده
را نمیتوان مانند SQL Server به راحتی Migrate کرد.
مواردی که توسط Database Initializerها قابل استفاده هستند شامل:
- Create Database
- Delete Database
- Migrate Database
- Seed Database
نمونه مثال جهت تنظیم پایگاه داده به روش جدید:
services.AddParbad()
.ConfigureDatabase(builder =>
{
// Choose your database provider (SQL Server, MySql, Sqlite, etc.)
builder.Use....
})
.ConfigureDatabaseInitializer(builder =>
{
builder.UseInitializer(async context =>
{
await context.Database.EnsureDeletedAsync();
// OR
await context.Database.EnsureCreatedAsync();
// OR
await context.Database.MigrateAsync();
});
});
در مثال بالا ابتدا در متد ConfigureDatabase نوع پایگاه داده مورد نظر خود را مشخص میکنیم.
سپس
در متد ConfigureDatabaseInitializer تعیین میکنیم که پایگاه داده به چه
صورتی باید ایجاد شود. همانطور که مشاهده میکنید، شما میتوانید پایگاه
داده را حذف، ایجاد و یا Migrate کنید.
همچنین جهت نوشتن راحتتر تنظیمات، متدهایی برای ایجاد، حذف و Migrate محیا شده که میتوانید مانند زیر از آنها استفاده کنید:
services.AddParbad()
.ConfigureDatabase(builder =>
{
// Choose your Entity Framework provider (SQL Server, MySql, Sqlite, etc.)
builder.Use....
})
.ConfigureDatabaseInitializer(builder =>
{
builder.CreateDatabase();
// OR
builder.DeleteAndCreateDatabase();
// OR
builder.CreateAndMigrateDatabase();
});
نکته ۱: اگر هیچکدام از متدهای کمکی بالا برای شما مناسب نیستند، از همان روش اول یعنی UseInitializer استفاده کنید.
نکته ۲: Database Initializer ها، به همان ترتیبی که اضافه شدهاند، اجرا خواهند شد.
نکته ۳:
جهت سادگی در Migrate کردن پایگاه داده، در هنگام تنظیم پایگاه داده مورد
نظر خود میتوانید از متد UseParbadMigrations استفاده کنید.
مثال:
services.AddParbad()
.ConfigureDatabase(builder =>
{
// SQL Server
builder.UseSqlServer("Connection String", options => options.UseParbadMigrations());
})
.ConfigureDatabaseInitializer(builder =>
{
builder.CreateAndMigrateDatabase();
});
متد UseParbadMigrations معادل متد زیر است:
builder.UseSqlServer("Connection String", options => options.MigrationsAssembly("Parbad"));
نمونه مثالها را همچنین میتوانید در صفحه
GitHub پروژه مشاهده کنید.