Aida-Hagh / EF-Core

Learn EF Core
1 stars 0 forks source link

Data Seeding #13

Open Aida-Hagh opened 4 months ago

Aida-Hagh commented 4 months ago

Data Seeding :

فرآیندی است که این امکان رو میده تا داده‌های اولیه را به پایگاه‌داده اضافه کنیم تا در زمان اولیه اجرای برنامه اطلاعات مورد نیاز در دسترس باشد. در مواردی که نیاز به تست یا راه‌اندازی سریع داده‌ها داریم به درد میخوره.

روش‌های Data Seeding: 1. استفاده از HasData

protected override void OnModelCreating(ModelBuilder modelBuilder) {

modelBuilder.Entity<Product>().HasData(
    new Product { ProductId = 1, Name = "Laptop", Price = 1200 },
    new Product { ProductId = 2, Name = "Mouse", Price = 20 },
    new Product { ProductId = 3, Name = "Keyboard", Price = 50 }
);

}

2. استفاده از IDataSeeder Interface : این اینترفیس به ما امکان می‌دهد که کنترل بیشتری بر روی پر کردن داده‌های اولیه داشته باشیم و عملیات پیشرفته‌تری نظیر خواندن از فایل یا دیتابیس دیگر را انجام دهیم.

public interface IDataSeeder {

Task SeedAsync(DbContext context);

}

public class ProductSeeder : IDataSeeder {

public async Task SeedAsync(AppDbContext context)
{
    if (!context.Products.Any())
    {
        context.Products.AddRange(
            new Product { ProductId = 1, Name = "Laptop", Price = 1200 },
            new Product { ProductId = 2, Name = "Mouse", Price = 20 },
            new Product { ProductId = 3, Name = "Keyboard", Price = 50 }
        );

        await context.SaveChangesAsync();
    }
}

}

در این مثال، ProductSeeder از IDataSeeder ارث‌بری شده است و متد SeedAsync را پیاده‌سازی می‌کند تا داده‌های اولیه محصولات را به پایگاه‌داده اضافه کند. این روش می‌تواند برای پر کردن داده‌های اولیه با شرایط خاص و یا مبتنی بر پردازش‌های دیگر مانند خواندن از فایل یا API مفید باشد.