اتكلمنا عليه برضو في الـ Data Seeding

خلينا نشرح الخطوات لإضافة طرق التوصيل عن طريق الـ Data Seeding باستخدام JSON file.

1. إعداد JSON File

أول حاجة، تأكد إنك عندك JSON File فيه البيانات اللي انت عايز تسييدها. هنفترض إن اسم الملف delivery.json وأنه موجود في المسار ../Shary.Repository/Data/DataSeed/.

محتويات الملف ممكن تكون بالشكل التالي:

[
  {
    "ShortName": "UPS1",
    "Description": "Fastest delivery time",
    "DeliveryTime": "1-2 Days",
    "Cost": 10
  },
  {
    "ShortName": "UPS2",
    "Description": "Get it within 5 days",
    "DeliveryTime": "2-5 Days",
    "Cost": 5
  },
  {
    "ShortName": "UPS3",
    "Description": "Slower but cheap",
    "DeliveryTime": "5-10 Days",
    "Cost": 2
  },
  {
    "ShortName": "FREE",
    "Description": "Free! You get what you pay for",
    "DeliveryTime": "1-2 Weeks",
    "Cost": 0
  }
]

2. تعديل StoreContextSeed

هنضيف الكود اللي هيقرأ البيانات من JSON ويضيفها في الـ Database لو كان الجدول فاضي:

public static async Task SeedAsync(StoreContext _dbContext)
{
	if (_dbContext.DeliveryMethods.Count() == 0)
	{
		var deliveryMethodsData = File.ReadAllText("../Shary.Repository/Data/DataSeed/delivery.json");
		var deliveryMethods = JsonSerializer.Deserialize<List<DeliveryMethod>>(deliveryMethodsData);
 
		if (deliveryMethods?.Count() > 0)
		{
			foreach (var deliveryMethod in deliveryMethods)
			{
				_dbContext.Set<DeliveryMethod>().Add(deliveryMethod);
			}
			await _dbContext.SaveChangesAsync();
		}
	}
}

3. استدعاء Method في Program

لازم تنادي على الـ Method دي لما يبدأ التطبيق. ممكن تضيفها في الـ Program حيث يتم استدعاء SeedAsync عند بدء التطبيق.