تمرين - إضافة مخزن بيانات

مكتمل

قبل أن تبدأ في تنفيذ واجهة برمجة تطبيقات الويب للبيتزا، تحتاج إلى امتلاك مخزن بيانات يمكننك إجراء العمليات عليه.

تحتاج إلى model فئة لتمثيل بيتزا في مخزونك. يحتوي النموذج على خصائص تمثل مواصفات البيتزا. يُستخدم النموذج لتمرير البيانات في واجهة برمجة تطبيقات الويب ولمواصلة خيارات البيتزا في مخزن البيانات.

في هذه الوحدة، يمثل مخزن البيانات هذا خدمة تخزين مؤقت محلية بسيطة في الذاكرة. في تطبيق العالم الحقيقي، يمكنك التفكير في استخدام قاعدة بيانات، مثل SQL Server، مع Entity Framework Core.

أنشئ نموذج بيتزا

  1. شغَّل الأمر التالي لإنشاء مجلد نماذج:

    mkdir Models
    

    حدد مجلد Models في Visual Studio Code وأضِف ملف جديد يُسمى Pizza.cs.

    لقطة شاشة لإضافة ملف جديد إلى مجلد Models في Visual Studio Code.

    يحتوي جذر المشروع الآن على Models دليل مع ملف فارغ Pizza.cs . اسم Models الدليل هو اصطلاح. اسم الدليل يأتي من تصميم وحدة التحكم في عرض النموذج الذي تستخدمه واجهة برمجة تطبيقات الويب.

  2. أضف التعليمات البرمجية التالية إلى Models/Pizza.cs واحفظ التغييرات. تعرف هذه الفئة البيتزا.

    namespace ContosoPizza.Models;
    
    public class Pizza
    {
        public int Id { get; set; }
        public string? Name { get; set; }
        public bool IsGlutenFree { get; set; }
    }
    

أضِف خدمة البيانات

  1. بادر بتشغيل الأمر التالي لإنشاء مجلد Services:

    mkdir Services
    

    حدد المجلد في Visual Studio Code وأضِف ملف جديد يُسمى PizzaService.cs.

    لقطة شاشة لـ Visual Studio Code تعرض إضافة ملف جديد إلى المجلد

  2. أضف التعليمات البرمجية التالية إلى Services/PizzaService.cs واحفظ التغييرات. تنشئ هذه التعليمة البرمجية خدمة بيانات بيتزا في الذاكرة.

    using ContosoPizza.Models;
    
    namespace ContosoPizza.Services;
    
    public static class PizzaService
    {
        static List<Pizza> Pizzas { get; }
        static int nextId = 3;
        static PizzaService()
        {
            Pizzas = new List<Pizza>
            {
                new Pizza { Id = 1, Name = "Classic Italian", IsGlutenFree = false },
                new Pizza { Id = 2, Name = "Veggie", IsGlutenFree = true }
            };
        }
    
        public static List<Pizza> GetAll() => Pizzas;
    
        public static Pizza? Get(int id) => Pizzas.FirstOrDefault(p => p.Id == id);
    
        public static void Add(Pizza pizza)
        {
            pizza.Id = nextId++;
            Pizzas.Add(pizza);
        }
    
        public static void Delete(int id)
        {
            var pizza = Get(id);
            if(pizza is null)
                return;
    
            Pizzas.Remove(pizza);
        }
    
        public static void Update(Pizza pizza)
        {
            var index = Pizzas.FindIndex(p => p.Id == pizza.Id);
            if(index == -1)
                return;
    
            Pizzas[index] = pizza;
        }
    }
    

    توفر هذه الخدمة خدمة تخزين مؤقت بسيطة للبيانات في الذاكرة مع نوعي بيتزا بشكل افتراضي. تستخدم واجهة برمجة تطبيقات الويب هذه الخدمة لأغراض العرض التوضيحي. عند إيقاف واجهة برمجة تطبيقات الويب وبدء تشغيلها، تتم إعادة تعيين ذاكرة التخزين المؤقت للبيانات في الذاكرة إلى نوعي البيتزا الافتراضيين من الدالة الإنشائية ل PizzaService.

إنشاء مشروع واجهة برمجة تطبيقات على الويب

قم بتشغيل الأمر التالي لإنشاء التطبيق:

dotnet build

ينجح الإنشاء من دون أي تحذيرات. إذا فشل البناء، فتَحقَّق من الإخراج للحصول على معلومات استكشاف الأخطاء وإصلاحها.

في الوحدة التالية، ستنشئ وحدة تحكم ستستخدم النموذج Pizza والفئة PizzaService.