إنشاء الـ Entities الخاصة بالـ Customer Basket Module
لما نبدأ شغل على أي Module جديد في المشروع، أول خطوة هي تصميم الـ Entities اللي تمثل البيانات الأساسية في هذا الجزء. في حالة الـ Customer Basket، عندنا كيانين أساسيين هما:
- الـCustomer Basket: بتمثل سلة المشتريات الخاصة بالعميل.
- الـBasket Item: بتمثل كل منتج تم اختياره ووضعه في السلة.
تصميم كيان Customer Basket
الكود:
public class CustomerBasket
{
public string Id { get; set; }
public List<BasketItem> Items { get; set; }
}
شرح التصميم:
Id
:- نوعه
string
لأن اللي هيعمل الـ Create للـ Customer Basket هو الـ Front-end (زي الـ Client-side JavaScript أو تطبيق موبايل). - مثال على الـ Id: UUID أو GUID بيتم إنشاؤه عند العميل.
- نوعه
Items
:- List من الكيان التاني (
BasketItem
). - بتحتوي على المنتجات اللي العميل أضافها للسلة.
- List من الكيان التاني (
تصميم كيان Basket Item
الكود:
public class BasketItem
{
public int Id { get; set; }
public string ProductName { get; set; }
public string PictureUrl { get; set; }
public decimal Price { get; set; }
public string Category { get; set; }
public string Brand { get; set; }
public int Quantity { get; set; }
}
شرح التصميم:
Id
:- بيمثل الـ Identifier الخاص بالمنتج، وغالبًا هيبقا نفس الـ Id اللي في قاعدة البيانات.
ProductName
:- اسم المنتج.
PictureUrl
:- رابط صورة المنتج.
Price
:- سعر الوحدة الواحدة من المنتج.
Category
:- تصنيف المنتج (مثلاً: “Electronics”, “Clothing”).
Brand
:- اسم العلامة التجارية.
Quantity
:- عدد الوحدات المطلوبة من المنتج.
ملاحظات حول التصميم:
- عدم التوريث من
BaseEntity
:- السبب إننا مش بنتعامل مع Database Context هنا.
- الـ
Id
هنا نوعهstring
عشان يتوافق مع طبيعة الـ Redis.
- التعامل مع Redis:
- الـ Redis بيستخدمه بشكل أساسي للتخزين المؤقت (Cache) أو تخزين الـ Sessions.
- مفيش حاجة زي
DbSet
أو Migrations هنا، لأن الـ Redis بيشتغل مع الـ Data كمجموعة Key-Value.
ليه مش عملنا Configuration للـ Customer Basket؟
- الـ
CustomerBasket
وBasketItem
بيتم تخزينهم في Redis، واللي طريقة عمله مختلفة تمامًا عن الـ Relational Databases زي SQL. - مفيش داعي لإضافة
DbSet
ولا إعداد Migrations لأننا مش هنضيف الـ Entities دي في الـ EF Core.