اتكلمنا عليه برضو في الـ 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
عند بدء التطبيق.