المشاركات

عرض المشاركات من أبريل, 2025

Excel - البحث والاستبدال (Find & Replace) وتنظيف البيانات.

2.5 Excel - البحث والاستبدال (Find & Replace) وتنظيف البيانات أثناء العمل مع البيانات في Excel ، قد تحتاج إلى العثور على قيم معينة أو استبدالها أو حتى تنظيف البيانات من الأخطاء أو الرموز غير المرغوب فيها. هنا يأتي دور أدوات Find & Replace ، وهي أدوات أساسية وسريعة لتحسين جودة بياناتك وتحليلها بشكل أدق. 🔹 أين تجد أدوات البحث والاستبدال؟ من تبويب Home ➔ Find & Select في مجموعة Editing. أو عبر اختصارات لوحة المفاتيح: Ctrl + F: لفتح نافذة البحث (Find). Ctrl + H: لفتح نافذة البحث والاستبدال (Find & Replace). 🔹 كيفية استخدام Find (البحث) اضغط Ctrl + F . اكتب النص أو الرقم الذي تريد البحث عنه. اختر Find Next للتنقل بين النتائج واحدة تلو الأخرى. أو اختر Find All لعرض كل النتائج دفعة واحدة. 🔹 كيفية استخدام Replace (الاستبدال) اضغط Ctrl + H . في خانة Find what اكتب النص أو القيمة التي تريد استبدالها. في خانة Replace with اكتب القيمة الجديدة. اضغط Replace لاستبدال كل نتيجة على حدة، أو Re...

Excel - استخدام الفلاتر (Filters) لتركيز التحليل

2.4 Excel - استخدام الفلاتر (Filters) لتركيز التحليل عندما تعمل مع مجموعات كبيرة من البيانات في Excel ، قد تحتاج إلى عرض جزء معين منها فقط دون حذف الباقي. هنا يأتي دور الفلاتر (Filters) ، وهي أداة فعالة لتركيز التحليل على بيانات معينة بسرعة وسهولة. 🔹 ما هو الفلتر (Filter) في Excel؟ الفلتر يسمح لك بعرض صفوف معينة بناءً على معايير محددة تقوم بتحديدها، مع إبقاء باقي البيانات مخفية مؤقتًا دون حذفها من الملف. 🔹 أين تجد أداة الفلترة؟ تجد الفلتر داخل تبويب Home ➔ Sort & Filter ➔ Filter أو مباشرة من تبويب Data ➔ Filter . 🔹 كيفية تطبيق الفلتر خطوة بخطوة حدد نطاق البيانات أو تأكد أن المؤشر داخل الجدول. اذهب إلى Data ➔ Filter . ستلاحظ ظهور أسهم ▼ بجانب رؤوس الأعمدة. اضغط على السهم بجانب العمود الذي تريد تصفيته. اختر القيم التي تريد عرضها فقط. 🔹 أنواع الفلاتر المتاحة فلترة حسب النص: مثل عرض الخلايا التي تحتوي على كلمة معينة. فلترة حسب الرقم: مثل عرض القيم الأكبر من 100. فلترة حسب التاريخ: مثل عرض بيانات لشهر محدد فقط. فلترة ...

Excel - التنسيق الشرطي (Conditional Formatting) لتحليل الأنماط بسرعة.

2.3 Excel - التنسيق الشرطي (Conditional Formatting) لتحليل الأنماط بسرعة التنسيق الشرطي (Conditional Formatting) في Excel هو أداة قوية تسمح لك بتطبيق تنسيقات معينة على الخلايا تلقائيًا بناءً على القيم الموجودة داخلها، مما يساعدك على تحليل الأنماط والتوجهات بسرعة ووضوح بصري. 🔹 ما هو التنسيق الشرطي؟ التنسيق الشرطي يعني أن Excel يقوم بتغيير مظهر الخلايا (مثل اللون، الخط، الرموز) تلقائيًا بناءً على شروط معينة تقوم بتحديدها. مثلاً: تلوين القيم الأكبر من 100 باللون الأخضر، أو تظليل الخلايا التي تحتوي على كلمة معينة. 🔹 أين تجد التنسيق الشرطي في Excel؟ اذهب إلى تبويب Home ➔ Conditional Formatting لتجد مجموعة من الخيارات المختلفة للتنسيق. 🔹 أنواع التنسيقات الشرطية المتوفرة Highlight Cells Rules: تمييز الخلايا بناءً على قيم مثل (أكبر من، أصغر من، بين قيمتين، تساوي نصًا معينًا). Top/Bottom Rules: تمييز القيم الأعلى أو الأدنى مثل أعلى 10 عناصر أو أقل 10٪. Data Bars: إضافة أشرطة ملونة داخل الخلية تعبر عن حجم القيمة نسبيًا. Color Scales: تدرجات لونية ...

Excel - التعامل مع الخلايا، الأعمدة، الصفوف، والجداول.

2.2 Excel - التعامل مع الخلايا، الأعمدة، الصفوف، والجداول في Excel ، الخلايا (Cells)، الصفوف (Rows)، الأعمدة (Columns)، والجداول (Tables) هي اللبنات الأساسية التي ننظم بها بياناتنا. فهم كيفية التعامل معها بكفاءة هو الخطوة الأولى لبناء ملفات بيانات قوية وقابلة للتحليل بسهولة. 🔹 أولاً: الخلايا (Cells) الخلية هي وحدة التخزين الأساسية في Excel. كل خلية تحدد بموقعها عبر تقاطع عمود وصف (مثل: A1, B5, C10). لتحديد خلية: اضغط عليها بزر الفأرة. لتحرير محتوى خلية: اضغط مرتين عليها أو اضغط عليها مرة ثم اكتب مباشرة في شريط الصيغة (Formula Bar). لنسخ أو نقل الخلايا: استخدم السحب (Drag) أو الأوامر Copy وPaste أو Cut. 🔹 ثانيًا: الأعمدة (Columns) الأعمدة تمتد رأسيًا ويتم تسميتها بأحرف (A, B, C,..., Z ثم AA, AB, وهكذا). لتحديد عمود كامل: اضغط على حرف العمود أعلى الجدول. لتغيير عرض العمود: ضع المؤشر بين حرفي عمودين واسحب لتكبير أو تصغير العرض. لإخفاء/إظهار الأعمدة: اضغط بزر الفأرة الأيمن واختر Hide أو Unhide. 🔹 ثالثًا: الصفوف (Rows) الصفوف ...

Excel - أنواع البيانات في Excel (نصوص - أرقام - تواريخ).

2.1 Excel - أنواع البيانات في Excel (نصوص - أرقام - تواريخ) في برنامج Excel ، التعامل مع البيانات بشكل صحيح يعتمد بدرجة كبيرة على معرفة أنواع البيانات (Data Types) التي يمكن أن تحتويها الخلايا. كل نوع من البيانات يتصرف بطريقة مختلفة ويؤثر على العمليات الحسابية والفلاتر والتحليلات التي يمكنك تنفيذها. 🔹 أنواع البيانات الرئيسية في Excel النصوص (Text): أي بيانات تتكون من أحرف مثل كلمات أو جمل أو أرقام مكتوبة كنص (مثلاً: "Hello", "123abc"). الأرقام (Numbers): أي بيانات رقمية يمكن استخدامها في العمليات الحسابية مثل الجمع والطرح (مثلاً: 150، 23.75). التواريخ (Dates): أي بيانات تمثل تاريخ أو وقت مثل (01/01/2024) أو (3:00 PM). 🔹 شرح كل نوع بالتفصيل ✅ النصوص (Text) - تعتبر أي مدخلات لا يمكن تفسيرها كأرقام أو تواريخ نصوصًا في Excel. - تُستخدم النصوص لوصف البيانات أو لتمثيل أرقام غير حسابية مثل أرقام الهوية أو رموز المنتجات. أمثلة: "محمد" ، "Excel" ، "INV-1234" ✅ الأرقام (Numbers) - تشمل الأعداد ال...

Excel - جولة تعريفية بواجهة برنامج Excel.

1.3 Excel - جولة تعريفية بواجهة برنامج Excel قبل أن نبدأ بتحليل البيانات باستخدام Excel ، من المهم أن نأخذ جولة تعريفية لنتعرف على أهم مكونات واجهة البرنامج. فهم الواجهة جيدًا يساعدك على التنقل بسرعة واستخدام الأدوات بكفاءة أثناء العمل على ملفات البيانات. 🔹 مكونات واجهة Excel الأساسية شريط العنوان (Title Bar): يعرض اسم الملف المفتوح حاليًا، بالإضافة إلى اسم البرنامج. الشريط الرئيسي (Ribbon): يحتوي على جميع الأدوات والأوامر منظمة في تبويبات (Tabs) مثل: الصفحة الرئيسية، إدراج، تخطيط الصفحة، الصيغ، البيانات، مراجعة، عرض. أدوات الوصول السريع (Quick Access Toolbar): مجموعة من الأوامر المفضلة التي يمكنك تخصيصها، مثل حفظ الملف، التراجع، الإعادة. صفحة العمل (Worksheet): المساحة التي تحتوي على خلايا البيانات المنظمة في صفوف (Rows) وأعمدة (Columns). أشرطة التمرير (Scroll Bars): تتيح لك التنقل أفقيًا أو رأسيًا داخل ورقة العمل. شريط الصيغة (Formula Bar): يعرض محتوى الخلية النشطة، ويمكنك كتابة أو تعديل الصيغ والبيانات من خلاله. التبويبات (Tabs) الخاصة بال...

Excel - لماذا نستخدم Microsoft Excel لتحليل البيانات؟

1.2 Excel - لماذا نستخدم Microsoft Excel لتحليل البيانات؟ رغم ظهور العديد من الأدوات المتقدمة لتحليل البيانات مثل Power BI وTableau وPython، إلا أن Microsoft Excel لا يزال يحتفظ بمكانته كأداة رئيسية لتحليل البيانات في الشركات والأعمال الصغيرة والكبيرة على حد سواء. 🔹 لماذا يعتبر Excel خيارًا ممتازًا لتحليل البيانات؟ سهولة الوصول: Excel متوفر تقريبًا في كل مكان — سواء على الحاسوب الشخصي أو عبر الإنترنت باستخدام Excel Online. سهولة الاستخدام: لا يتطلب مهارات برمجية أو تقنية متقدمة للعمل عليه. تكلفة منخفضة: مقارنة بالأدوات المتخصصة، Excel يأتي غالبًا ضمن حزمة Office بدون تكلفة إضافية كبيرة. مرونة عالية: يمكنك استخدامه للجداول الصغيرة أو تحليل قواعد بيانات ضخمة. تنوع الأدوات: يحتوي Excel على مجموعة ضخمة من الأدوات المدمجة لتحليل البيانات مثل: الفلاتر، الصيغ (Formulas)، الجداول المحورية (PivotTables)، الرسوم البيانية (Charts)، التحليل الشرطي (Conditional Formatting). 🔹 أهم ميزات Excel في تحليل البيانات PivotTables: إنشاء ملخصات ديناميكية للبيانات...

Excel - ما هو تحليل البيانات؟ ولماذا هو مهم للأعمال؟

1.1 Excel - ما هو تحليل البيانات؟ ولماذا هو مهم للأعمال؟ تحليل البيانات (Data Analysis) هو عملية فحص، تنظيف، تحويل، ونمذجة البيانات بهدف اكتشاف معلومات مفيدة، تقديم استنتاجات، ودعم اتخاذ القرارات. في عالم الأعمال اليوم، تحليل البيانات أصبح من أهم الأدوات التي تساهم في تحسين الأداء وزيادة الأرباح. 🔹 ما هو تحليل البيانات؟ تحليل البيانات يعني التعامل مع البيانات الخام لاستخلاص أنماط، علاقات، واتجاهات يمكن أن تساعد في فهم الواقع الحالي أو التنبؤ بالمستقبل. عملية التحليل قد تشمل: جمع البيانات من مصادر مختلفة. تنظيم البيانات في جداول وقوائم قابلة للمعالجة. تنظيف البيانات من الأخطاء أو القيم الناقصة. استخدام أدوات وتقنيات لاستخلاص النتائج. ببساطة: تحليل البيانات هو تحويل الأرقام إلى رؤى قابلة للتنفيذ. 🔹 لماذا يعتبر تحليل البيانات مهمًا للأعمال؟ دعم اتخاذ القرار: القرارات المبنية على بيانات دقيقة تؤدي إلى نتائج أفضل من القرارات المبنية على الحدس فقط. تحديد المشكلات والفرص: عبر تحليل الأداء يمكنك اكتشاف أماكن الضعف وأماكن الفرص للنمو. تحسي...

Entity Framework -متى تستخدم كل واحدة منهما؟

9.9 Entity Framework - متى تستخدم كل واحدة منهما؟ بعد أن فهمنا مميزات وعيوب كل من Data Annotations و Fluent API ، يأتي السؤال المهم: متى نستخدم كل طريقة؟ في هذا الدرس سنتعرف على أفضل السيناريوهات لاستخدام كل منهما حسب طبيعة المشروع وحجمه وتعقيده. 🔹 متى تستخدم Data Annotations؟ في المشاريع الصغيرة أو النماذج الأولية (Prototypes): حيث تكون الحاجة لضبطات بسيطة وسريعة. عندما تكون العلاقات والبيانات غير معقدة: مثل تطبيق CRUD بسيط بدون علاقات مركبة أو شروط متقدمة. إذا كان الفريق صغيرًا أو يعمل بسرعة: حيث يكون الاهتمام الأكبر بسرعة التطوير أكثر من تعقيد البنية. للمبتدئين: الذين يتعلمون Entity Framework لأول مرة ويريدون التدرج في الفهم قبل الانتقال لضبط أعقد. 🔹 متى تستخدم Fluent API؟ في المشاريع الكبيرة والمتوسطة: حيث توجد جداول كثيرة وعلاقات معقدة وقواعد بيانات ضخمة. عندما تحتاج لضبط مفاتيح مركبة (Composite Keys): أو جداول وسيطة (Join Tables) أو علاقات مخصصة. إذا كنت تريد فصل الضبط عن الكود الأساسي: لتجعل الكيانات (Entities) نظيفة وخا...

Entity Framework -مميزات وعيوب كل طريقة.

9.8 Entity Framework - مميزات وعيوب كل طريقة (Fluent API vs Data Annotations) في Entity Framework Core، يمكننا ضبط الكيانات باستخدام طريقتين رئيسيتين: Data Annotations أو Fluent API . كل طريقة لها مميزاتها وعيوبها، واختيار الأنسب يعتمد على طبيعة المشروع ومتطلباته. 🔹 مميزات Data Annotations سهولة الاستخدام: كتابة أقل وأسهل للفهم خاصة للمبتدئين. توفير الوقت: يمكنك ضبط الكيانات بسرعة عبر السمات فوق الخصائص مباشرة. مثالية للمشاريع الصغيرة: إذا كان المشروع بسيطًا أو متوسطًا ولا يحتوي على علاقات معقدة. 🔹 عيوب Data Annotations محدودية التحكم: لا تدعم جميع أنواع الضبط، خاصة العلاقات المعقدة والفهارس متعددة الأعمدة. تشويش الكود: كثرة السمات قد تجعل كود الكيان مزدحمًا وغير نظيف. صعوبة التعديل لاحقًا: تعديل الخصائص يتطلب تعديل الكيانات نفسها مما قد يؤثر على الكود الحالي. 🔹 مميزات Fluent API مرونة كاملة: يمكنك ضبط كل شيء بدقة (العلاقات، الفهارس، القيم الافتراضية، المفاتيح المركبة، إلخ). فصل الإعدادات عن الكيانات: الكيانات تظل نظيفة ...

Entity Framework - Fluent API Complex Types (Owned Entities)

9.7 Entity Framework - شرح Complex Types (Owned Entities) في بعض الأحيان، نحتاج إلى تخزين مجموعة خصائص مرتبطة ببعضها في نفس الجدول بدون إنشاء جدول منفصل لها. هنا يظهر مفهوم Owned Entities أو ما يُعرف أحيانًا بـ Complex Types ، وهي ميزة قوية جدًا في Entity Framework Core. 🔹 ما هو Owned Entity؟ Owned Entity هو كيان (Entity) يتم ربطه بشكل كامل بكائن آخر (المالك - Owner)، ويتم تخزين خصائصه داخل نفس جدول الكائن المالك، وليس في جدول مستقل. بمعنى آخر: - لا يتم إنشاء جدول جديد للـ Owned Entity. - يتم دمج خصائصه مع خصائص الكيان الأساسي في نفس الجدول. 🔹 مثال عملي على Owned Entities افترض لدينا كيان Customer يحتوي على عنوان Address مكوّن من عدة خصائص مثل: Street وCity وCountry. // الكلاس المملوك public class Address { public string Street { get; set; } public string City { get; set; } public string Country { get; set; } } // الكيان الرئيسي public class Customer { public int Id { get; set; } public string Name { get; set; } public Addr...

Entity Framework - Fluent API إنشاء الفهارس باستخدام HasIndex()

9.6 Entity Framework - إنشاء الفهارس باستخدام HasIndex() العمل مع قواعد البيانات الكبيرة يتطلب تحسين أداء الاستعلامات، وأحد أهم وسائل تحسين الأداء هو إنشاء الفهارس (Indexes) على الأعمدة. في Entity Framework Core، باستخدام Fluent API ، يمكنك إنشاء الفهارس بسهولة باستخدام الدالة HasIndex() . 🔹 ما هو الفهرس (Index) في قواعد البيانات؟ الفهرس عبارة عن هيكل بيانات يُستخدم لتسريع عمليات البحث والاستعلام عن السجلات داخل الجداول. وجود الفهرس يجعل عملية البحث عن قيمة معينة أسرع بكثير مقارنة بالبحث بدون فهرس. 🔹 كيفية إنشاء فهرس باستخدام HasIndex() يمكنك إنشاء فهرس على عمود معين أو مجموعة من الأعمدة باستخدام HasIndex() داخل OnModelCreating . protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Product>(entity => { entity.HasIndex(p => p.Name); }); } في هذا المثال سيتم إنشاء فهرس على عمود Name في جدول Products لتحسين عمليات البحث عن الأسماء. 🔹 إنشاء فهرس مركب (Composite Index) يمكنك إنشاء ف...

Entity Framework - Fluent API ضبط الجدااول والعلاقات

9.5 Entity Framework - ضبط الجداول والعلاقات باستخدام ToTable(), HasOne().WithMany(), HasMany().WithOne() في Entity Framework Core باستخدام Fluent API ، يمكننا ضبط أسماء الجداول (Tables) والتحكم الكامل بالعلاقات (Relationships) بين الكيانات بطريقة دقيقة ومنظمة. في هذا الدرس سنتعلم كيف نستخدم الدوال ToTable() ، HasOne().WithMany() ، و HasMany().WithOne() . 🔹 ToTable() - تخصيص اسم الجدول تُستخدم الدالة ToTable() لتحديد اسم الجدول في قاعدة البيانات بشكل صريح بدلاً من الاعتماد على اسم الكيان (Entity) بشكل افتراضي. modelBuilder.Entity<Product>() .ToTable("tbl_Products"); هنا سيتم إنشاء أو ربط الكيان Product مع جدول اسمه tbl_Products في قاعدة البيانات. 🔹 HasOne().WithMany() - تعريف علاقة One-to-Many تُستخدم لتعريف علاقة بين كيانين حيث أن كيانًا واحدًا يرتبط بالعديد من الكيانات الأخرى (مثل: كل Customer له العديد من Orders). مثال عملي: modelBuilder.Entity<Order>() .HasOne(o => o.Customer) .WithMany(c => c.Orders) ...

Entity Framework - Fluent API 0 التحكم في خصائص الأعمدة باستخدام

9.4 Entity Framework - التحكم في خصائص الأعمدة باستخدام HasMaxLength(), IsRequired(), HasColumnName(), HasDefaultValue() باستخدام Fluent API في Entity Framework Core، يمكنك التحكم الكامل في خصائص الأعمدة (Columns) داخل الجداول. توفر لك Fluent API وظائف مثل HasMaxLength() ، IsRequired() ، HasColumnName() ، و HasDefaultValue() لضبط كل تفاصيل العمود بطريقة احترافية. 🔹 HasMaxLength() - تحديد الطول الأقصى للنصوص تُستخدم لتحديد الحد الأقصى لعدد الأحرف التي يمكن تخزينها في عمود نصي (String Column). modelBuilder.Entity<Product>(entity => { entity.Property(p => p.Name) .HasMaxLength(100); }); هنا لن يقبل العمود أكثر من 100 حرف داخل الخاصية Name . 🔹 IsRequired() - جعل العمود إلزاميًا (NOT NULL) تُستخدم لجعل العمود لا يقبل القيم الفارغة (Null) ويصبح مطلوبًا في قاعدة البيانات. modelBuilder.Entity<Product>(entity => { entity.Property(p => p.Name) .IsRequired(); }); بهذا الشكل، العمود Name لن يقبل قيمًا فارغ...

Entity Framework - Fluent API المفاتيح الأساسية HasKey()

9.3 Entity Framework - المفاتيح الأساسية باستخدام HasKey() في Entity Framework Core، يعتبر المفتاح الأساسي (Primary Key) جزءًا أساسيًا لكل جدول. من خلال Fluent API ، نستخدم الدالة HasKey() لتعريف المفاتيح الأساسية سواء كانت مفتاحًا واحدًا (Single Key) أو مفتاحًا مركبًا (Composite Key). 🔹 ما هي وظيفة HasKey()؟ تُستخدم الدالة HasKey() لتعريف الخاصية أو مجموعة الخصائص التي تشكل المفتاح الأساسي (Primary Key) للكيان (Entity) في قاعدة البيانات. يجب أن يكون لكل كيان مفتاح أساسي حتى يتمكن EF Core من تتبعه والتعامل معه داخل قاعدة البيانات. 🔹 كيفية استخدام HasKey() مع مفتاح أساسي مفرد protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Product>(entity => { entity.HasKey(p => p.Id); }); } هنا حددنا أن الخاصية Id هي المفتاح الأساسي للكيان Product . 🔹 كيفية استخدام HasKey() مع مفتاح أساسي مركب (Composite Key) في بعض الأحيان نحتاج إلى مفتاح أساسي يتكون من أكثر من خاصية، مثل: OrderId وProduct...

Entity Framework - Fluent API متى نحتاجه ولماذا يعتبر أقوى من Data Annotations؟

9.2 Entity Framework - متى نحتاج Fluent API ولماذا يعتبر أقوى من Data Annotations؟ Fluent API يوفر لك تحكمًا أدق وأوسع مقارنة باستخدام Data Annotations . في هذا الدرس سنفهم متى نحتاج لاستخدام Fluent API ولماذا يعتبر أقوى وأشمل من Data Annotations، خاصة في المشاريع الكبيرة والمعقدة. 🔹 متى نحتاج استخدام Fluent API؟ عند الحاجة لضبط علاقات معقدة: مثل وجود أكثر من علاقة بين كيانين أو تخصيص سلوك العلاقات (Cascade Delete، مثلاً). عند التعامل مع كيانات لا يمكن تعديلها: مثل الكيانات القادمة من مكتبات خارجية (External Libraries). عند تخصيص خصائص متقدمة: مثل تعيين دقة الأرقام، إنشاء فهارس متعددة الأعمدة، أو تغيير أسماء الجداول والأعمدة بطريقة ديناميكية. عند الرغبة في عزل الإعدادات: بحيث يكون كود الضبط (Configuration) منفصل عن كود الكيانات لزيادة تنظيم المشروع. عند الحاجة لضبط Owned Types أو Complex Types: وهي كيانات مملوكة لا يتم إنشاؤها كجداول منفصلة. 🔹 لماذا يعتبر Fluent API أقوى من Data Annotations؟ مرونة كاملة: تستطيع ضبط أي خاصية أو علاقة أو ...

Entity Framework - Fluent API ما هو؟

9.1 Entity Framework - ما هو Fluent API؟ عند العمل مع Entity Framework Core، نحتاج أحيانًا إلى ضبط الكيانات (Entities) بطريقة أكثر تفصيلًا ومرونة مما توفره Data Annotations . هنا يأتي دور Fluent API ، وهي طريقة متقدمة لضبط كل تفاصيل بناء قاعدة البيانات باستخدام أسلوب برمجي (برمجة متسلسلة - Fluent Style) داخل كلاس الـ DbContext . 🔹 تعريف Fluent API Fluent API هي مجموعة من الدوال البرمجية التي يتم استخدامها داخل دالة OnModelCreating في كلاس DbContext لضبط خصائص الكيانات والجداول والعلاقات بدقة متناهية. بدلًا من استخدام Attributes فوق الخصائص أو الكلاسات، يتم استخدام سلسلة أوامر Fluent API لضبط كل شيء بطريقة أكثر تفصيلًا وقابلية للتحكم. 🔹 مثال بسيط على Fluent API using Microsoft.EntityFrameworkCore; public class AppDbContext : DbContext { public DbSet<Product> Products { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Product>(entity => { entity.Has...

Entity Framework - Data Annotation كيف تتفادى الأخطاء المعروفة؟

8.9 Entity Framework - كيف تتفادى الأخطاء المعروفة عند استخدام Data Annotations؟ استخدام Data Annotations في Entity Framework Core طريقة قوية لضبط الكيانات، لكنها قد تؤدي إلى بعض الأخطاء الشائعة إذا لم ننتبه لبعض التفاصيل. في هذا الدرس سنعرض أهم الأخطاء التي قد تقع فيها، وكيفية تجنبها بشكل احترافي. 🔹 1️⃣ نسيان تعيين المفتاح الأساسي [Key] إذا لم تحدد خاصية كمفتاح أساسي، قد يرفض EF Core إنشاء الجدول أو يُنشئ الجدول بدون مفتاح أساسي مما يسبب مشاكل في العمليات الأساسية مثل Update وDelete. // ✅ تأكد من وجود [Key] public class Product { [Key] public int Id { get; set; } } 🔹 2️⃣ استخدام [Required] على أنواع قيمة (Value Types) لا حاجة لاستخدام [Required] مع أنواع القيمة مثل int أو decimal، لأنها بطبيعتها لا تقبل القيمة Null. الاستخدام الصحيح يكون فقط مع أنواع المرجع (Reference Types) مثل string أو كائنات أخرى. // ❌ خطأ: لا داعي لوضع [Required] على int [Required] public int Quantity { get; set; } // ✅ صحيح: ضع [Required] على string [Required] public ...

Entity Framework - Data Annotation خصائص متقدمة [NotMapped]، [ConcurrencyCheck]، [Timestamp]، [Index].

8.8 Entity Framework - خصائص متقدمة [NotMapped]، [ConcurrencyCheck]، [Timestamp]، [Index] بالإضافة إلى السمات الأساسية في Data Annotations ، يوفر Entity Framework Core مجموعة من الخصائص المتقدمة التي تمنحنا تحكمًا إضافيًا في الكيانات وقواعد البيانات، مثل: [NotMapped] ، [ConcurrencyCheck] ، [Timestamp] ، و [Index] . 🔹 [NotMapped] - تجاهل الخاصية من التتبع تُستخدم خاصية [NotMapped] لإعلام EF Core أن هذه الخاصية لا يجب أن يتم إنشاؤها كعمود في قاعدة البيانات. using System.ComponentModel.DataAnnotations.Schema; public class Product { public int Id { get; set; } public string Name { get; set; } [NotMapped] public string ComputedValue { get; set; } } في هذا المثال، الخاصية ComputedValue ستظل موجودة داخل الكود ولكن لن يتم إنشاء عمود لها في قاعدة البيانات. 🔹 [ConcurrencyCheck] - التحقق من التزامن تُستخدم خاصية [ConcurrencyCheck] لضمان أن السجل لم يتم تعديله بواسطة مستخدم آخر أثناء تعديلك له. إذا تغيرت القيمة في قاعدة البيانات أثناء تعديلك،...

Entity Framework - Data Annotation التحكم بالعلاقات باستخدام [ForeignKey]، [InverseProperty].

8.7 Entity Framework - التحكم بالعلاقات باستخدام [ForeignKey] و[InverseProperty] عند العمل مع علاقات الجداول (Tables Relationships) في Entity Framework Core، قد نحتاج أحيانًا لتحديد العلاقات بشكل صريح وواضح. هنا يأتي دور سمتي [ForeignKey] و [InverseProperty] لضبط العلاقات بين الكيانات (Entities) بطريقة دقيقة ومنظمة. 🔹 [ForeignKey] - تحديد المفتاح الأجنبي (Foreign Key) تُستخدم خاصية [ForeignKey] لتحديد الخاصية التي تمثل المفتاح الأجنبي (Foreign Key) لربط كيان بكيان آخر. مثال عملي: using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; public class Order { [Key] public int Id { get; set; } public int CustomerId { get; set; } [ForeignKey("CustomerId")] public Customer Customer { get; set; } } public class Customer { [Key] public int Id { get; set; } public string Name { get; set; } } هنا الكلاس Order يحتوي على خاصية CustomerId ، وتم ربطها صراحةً بالكلاس Customer باستخد...

Entity Framework - Data Annotation تخصيص الجداول والأعمدة باستخدام [Table]، [Column]

8.6 Entity Framework - تخصيص الجداول والأعمدة باستخدام [Table] و[Column] بشكل افتراضي، يقوم Entity Framework Core بإنشاء أسماء الجداول والأعمدة في قاعدة البيانات بناءً على أسماء الكيانات (Entities) والخصائص (Properties). ولكن أحيانًا نحتاج إلى تخصيص هذه الأسماء أو تغيير بعض الخصائص المرتبطة بها، وهنا نستخدم السمات [Table] و [Column] . 🔹 [Table] - تخصيص اسم الجدول تُستخدم خاصية [Table] لتحديد اسم مختلف للجدول في قاعدة البيانات بدلاً من الاعتماد على اسم الكيان نفسه. مثال عملي: using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; [Table("tbl_Products")] public class Product { [Key] public int Id { get; set; } public string Name { get; set; } } هنا سيتم إنشاء أو ربط الكيان Product بالجدول tbl_Products بدلًا من "Products". 🔹 [Column] - تخصيص اسم العمود أو خصائصه تُستخدم خاصية [Column] لتحديد اسم مخصص للعمود أو لتحديد نوع البيانات في قاعدة البيانات. مثال عملي: public clas...

Entity Framework - Data Annotations [Key]، [Required]، [MaxLength]، [StringLength].

8.5 Entity Framework - شرح [Key]، [Required]، [MaxLength]، [StringLength] في هذا الدرس سنتعرف على أهم وأشهر سمات Data Annotations التي تستخدم مع الكيانات (Entities) في Entity Framework Core، وهي: [Key] ، [Required] ، [MaxLength] ، و [StringLength] . 🔹 [Key] - تعريف المفتاح الأساسي تُستخدم خاصية [Key] لتحديد أن هذا الحقل هو المفتاح الأساسي (Primary Key) للجدول في قاعدة البيانات. using System.ComponentModel.DataAnnotations; public class Product { [Key] public int ProductId { get; set; } public string Name { get; set; } } في هذا المثال، خاصية ProductId ستكون المفتاح الأساسي للجدول. 🔹 [Required] - جعل الخاصية إلزامية تُستخدم خاصية [Required] لجعل قيمة الخاصية إلزامية (أي لا تقبل القيم الفارغة Null). using System.ComponentModel.DataAnnotations; public class Product { [Key] public int Id { get; set; } [Required] public string Name { get; set; } } بدون تحديد [Required] ، يمكن أن يسمح EF Core بحفظ سجلات بدون اسم. 🔹 [M...

Entity Framework - Data Annotations مميزاتها وعيوبها

8.4 Entity Framework - مميزات وعيوب Data Annotations بعد أن تعرفنا على مفهوم Data Annotations في Entity Framework Core، من المهم أن نفهم مميزاتها وعيوبها بوضوح حتى نعرف متى نستخدمها ومتى نلجأ لبدائل أخرى مثل Fluent API . 🔹 مميزات Data Annotations سهولة الاستخدام: يمكنك ضبط الكيانات بشكل سريع ومباشر دون الحاجة لكود إضافي معقد. وضوح الكود: تكون إعدادات الكيان مرئية فوق الخصائص مباشرة مما يسهل قراءتها وفهمها. مثالية للمشاريع الصغيرة والمتوسطة: إذا كان نموذج البيانات بسيطًا ولا يحتوي على علاقات معقدة، تكون Data Annotations كافية تمامًا. تقليل الحاجة إلى تعديل DbContext: في كثير من الحالات لا تحتاج للدخول إلى OnModelCreating . توحيد مكان الإعدادات: كل الضبط يكون مرفقًا بالكلاس نفسه، مما يجعل الصيانة أسهل أحيانًا. 🔹 عيوب Data Annotations محدودية الإمكانيات: لا توفر تحكمًا كاملًا بكل تفاصيل ضبط قاعدة البيانات (مثل بعض أنواع العلاقات المعقدة). غير مناسبة للنماذج الكبيرة والمعقدة: في حالة وجود علاقات معقدة أو قواعد متقدمة، يصبح استخدام Data An...

Entity Framework - Data Annotations ما هي؟

8.3 Entity Framework - ما هي Data Annotations؟ عند استخدام Entity Framework Core، نحتاج أحيانًا إلى ضبط كيفية تعامل الكيانات (Entities) مع قاعدة البيانات بطريقة بسيطة ومباشرة. واحدة من الطرق السهلة لذلك هي استخدام Data Annotations ، وهي عبارة عن سمات (Attributes) نضعها فوق الخصائص (Properties) أو الكلاسات (Classes) لتعريف خصائص إضافية. 🔹 ما هي Data Annotations؟ Data Annotations هي سمات (Attributes) تُضاف مباشرةً إلى الكيانات (Entities) أو خصائصها في الكود بهدف ضبط سلوك Entity Framework Core بطريقة سهلة وسريعة، مثل: تعريف المفتاح الأساسي (Primary Key). فرض الحقول الإلزامية (Required Fields). تحديد أطوال النصوص (مثل MaxLength وStringLength). تحديد العلاقات بين الكيانات (مثل ForeignKey). تخصيص أسماء الجداول أو الأعمدة. 🔹 لماذا نستخدم Data Annotations؟ تسهيل كتابة الكود عبر وضع الضبط اللازم داخل الكلاس نفسه. تقليل الحاجة لكتابة إعدادات إضافية داخل OnModelCreating . توفير طريقة سريعة لضبط القواعد الأساسية للبيانات. 🔹 مثال بسيط على استخد...

Entity Framework - الفرق بين (Fluent API) (Data Annotations).

Entity Framework - الفرق بين (Fluent API) و (Data Annotations) عند ضبط الكيانات (Entities) في Entity Framework Core، أمامنا خياران أساسيان: Data Annotations أو Fluent API . كلا الطريقتين تحققان نفس الهدف (ضبط الكيانات)، لكن كل طريقة لها مميزاتها واستخداماتها الخاصة. 🔹 ما هي Data Annotations؟ هي طريقة لضبط الكيانات باستخدام سمات (Attributes) يتم إضافتها مباشرة فوق الخصائص (Properties) أو الكيانات (Entities) داخل الكود. مثال على استخدام Data Annotations: public class Product { [Key] public int Id { get; set; } [Required] [MaxLength(100)] public string Name { get; set; } [Precision(18, 2)] public decimal Price { get; set; } } هنا قمنا بتحديد المفتاح الأساسي، جعل الاسم إلزاميًا، وتحديد أقصى طول له، وضبط الدقة للـ Price. 🔹 ما هو Fluent API؟ هو أسلوب آخر لضبط الكيانات من خلال الكود داخل الدالة OnModelCreating باستخدام أسلوب برمجي مرن (Fluent Programming Style) بدلاً من إضافة السمات مباشرة على الكيانات. مثال على استخدام Fl...