Entity Framework - إدخال بيانات مبدئية (Data Seeding)
Entity Framework - إدخال بيانات مبدئية (Data Seeding)
عند إنشاء قاعدة بيانات جديدة باستخدام Entity Framework Core، قد تحتاج إلى إضافة بعض البيانات الافتراضية (مثل القيم الأساسية أو بيانات التجربة) تلقائيًا أثناء عملية إنشاء قاعدة البيانات. تسمى هذه العملية Data Seeding أي "إدخال بيانات مبدئية".
🔹 متى نستخدم Data Seeding؟
نستخدم Data Seeding عندما نحتاج إلى:
- إضافة بيانات افتراضية مهمة لتشغيل التطبيق (مثل أدوار المستخدمين أو إعدادات النظام).
- تجهيز بيانات للاختبار أثناء تطوير التطبيق.
- تعبئة الجداول الأساسية بمعلومات أولية.
🔹 كيف يتم إعداد Data Seeding في EF Core؟
يتم تعريف البيانات المبدئية عادةً داخل ملف DbContext باستخدام دالة OnModelCreating مع طريقة HasData().
🔹 مثال عملي على Data Seeding
نفترض أن لدينا كيان (Entity) اسمه Product، ونريد أن نضيف منتجات افتراضية.
هذا هو شكل الكيان (Entity):
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
ولإضافة بيانات مبدئية، نستخدم HasData() داخل OnModelCreating في DbContext:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Product>().HasData(
new Product { Id = 1, Name = "منتج 1", Price = 10.5m },
new Product { Id = 2, Name = "منتج 2", Price = 20.0m },
new Product { Id = 3, Name = "منتج 3", Price = 30.75m }
);
}
ملاحظة مهمة: يجب تحديد الـ Id (أو المفتاح الأساسي) يدويًا في البيانات المدخلة أثناء الـ Seeding.
🔹 ماذا يحدث بعد تنفيذ Data Seeding؟
عند إنشاء أو تحديث قاعدة البيانات باستخدام Migrations، يقوم EF Core تلقائيًا بإضافة هذه البيانات إلى الجدول المحدد. إذا كانت البيانات موجودة بنفس المفاتيح، فإنه يتجنب إدخالها مرة أخرى.
🔹 ملاحظة مهمة عن التعديلات على البيانات المبدئية
إذا قمت بتغيير البيانات التي تم إدخالها عبر HasData()، يجب إنشاء Migration جديدة لكي تُطبق التغييرات على قاعدة البيانات. EF Core يتعامل مع Data Seeding بنفس طريقة تعامله مع تعديلات الجداول.
🔹 خطوات التعامل مع التعديلات
- تعديل بيانات
HasData()داخلOnModelCreating. - تنفيذ أمر إنشاء Migration جديدة:
Add-Migration UpdateSeedData - تحديث قاعدة البيانات:
Update-Database
🔹 خلاصة الدرس
Data Seeding هي طريقة فعالة لإضافة بيانات مبدئية تلقائيًا مع إنشاء قاعدة البيانات. وهي مفيدة جدًا لضمان وجود بيانات أساسية عند تشغيل التطبيق لأول مرة. يجب الانتباه إلى ضرورة استخدام Id ثابت لكل سجل لضمان استقرار العمليات.
تعليقات
إرسال تعليق