إضافة Model لموقع ASP.NET MVC

في هذه المقالة سوف نقوم بإضافة الـ classes لإدارة الكتب في قاعدة البيانات وهذه ال classes ستكون جزء الـ Model في تطبيق ASP.NET MVC، والـ Model كما عرفناه سابقاً: هو كلاسات Classes  تمثل البيانات التي سيستخدمها الموقع.

سنستخدم تقنية تقدمها NET. للوصول الى البيانات، اسمها  “Entity Framework” من أجل بناء وعمل Model classes.

هذه المقالة جزء من سلسلة لتعلم أساسيات ASP.NET MVC للمبتدئين:

إن Entity Framework تدعم نموذج تطويري يدعى “Code First“، وهي  تقنية تسمح لنا بإضافة Model objects من خلال كتابة classes والتي تعرف أيضا باسم POCO Classes  وبعد ذلك يتم توليد قاعدة بيانات بجداولها وعلاقاتها انطلاقاً من هذه ال classes اوتوماتيكياً.

إضافة Model classes

في Solution Explorer قم بالنقر بزر الفأرة اليميني على المجلد Models ثم اختر Add ثم اختر Class

قم بإدخال اسم  ال Book” :class”

قم بإضافة الخصائص التالية إلى Book class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ArabicArchive.Models
{
    public class Book
    {
       public int Id { set; get; }
       public string Title { set; get; }
       public string Description { set; get; }
       public DateTime PublishDate { set; get; }
       public string Author { set; get; }
       public int NumberOfPages { set; get; }
       public double GoodreadsRate { set; get; }
       public int TypeId { set; get; }

    }

قم أيضا في نفس الملف بإضافة  Type class (بإمكانك في ملف جديد أيضاً)، وقم في هذا ال class باضافة الخصائص التالية:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace ArabicArchive.Models
{
    public class Book
    {
      public int Id { set; get; }
      public string Title { set; get; }
      public string Description { set; get; }
      public DateTime PublishDate { set; get; }
      public string Author { set; get; }
      public int NumberOfPages { set; get; }
      public double GoodreadsRate { set; get; }
      public int TypeId { set; get; }
    }
    
    public class Type
    {
      public  int Id { set; get; }
      public  string Title { set; get; }
      public  string Description { set; get; }
    
    }
}

سوف نستخدم هذه  الـ classes  لتمثيل الكتب وأنواعها في قاعدة البيانات.

حيث أن كل instance من  Book  class سيكون عبارة عن سجل في جدول Book  في قاعدة البيانات وكل خاصية في  Book  class  ستكون عامود في الجدول.

لاستخدام System.Data.Entity  وال Classes المرتبطة بها نحتاج لتنصيب  EntityFramework

تنصيب Entity Framework

في solution Explorer قم بالنقر بزرالفأرة اليميني على اسم المشروع، قم باختيار Manage NuGet Packages كما هو موضح بالصورة التالية:

سيتم فتح النافذة التالية:

في هذه النافذة قم  باختيار “EntityFramework”  من القسم اليساري للنافذة أو قم بالكتابة في مربع البحث: “EntityFramework”

قم باختيار أحدث نسخة  وقم بالضغط على زر Install فتظهر النافذة التالية:

قم بالضغط على زر OK  للمتابعة.

بعد ذلك تظهر نافذة من أجل الموافقة على شروط الترخيص، قم بالنقر على I Accept للمتابعة.

وبعدها يبدأ تثبيت EntityFramework

عند انتهاء التثبيت ستظهر رسالة توضح نجاح التثبيت  في نافذة Output كما هو موضح بالصورة التالية

في ملف Book.cs قم بإضافة الخاصية التالية الى Book Class

public virtual Type Type { set; get; }

إن هذه الخاصية هي عبارة عن reference الى object  من النوع type، تستخدم هذه الخاصية لتسهيل عملية تحديد النوع لكل كتاب.

قم بإضافة الخاصية التالية الى Type Class:

 public virtual ICollection<Book> Books { set; get; }

 إن هذه الخاصية هي عبارة عن لائحة بجميع الكتب التي تنتمي لنوع معين من الكتب، باستخدام هذه الخاصية نستطيع معرفة كل الكتب التي تنتمي لنوع معين.

في نفس الملف قم بإضافة  BookDBContext class :

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace ArabicArchive.Models
{
    public class Book
    {
      public int Id { set; get; }
      public string Title { set; get; }
      public string Description { set; get; }
      public DateTime PublishDate { set; get; }
      public string Author { set; get; }
      public int NumberOfPages { set; get; }
      public double GoodreadsRate { set; get; }
      public int TypeId { set; get; }
      public virtual Type Type { set; get; }
    }
    
    public class Type
    {
      public  int Id { set; get; }
      public  string Title { set; get; }
      public  string Description { set; get; }
      public virtual ICollection<Book> Books { set; get; }
    }
    public class BookDBContext : DbContext
    {
       public DbSet<Book>  Books { get; set; }
       public DbSet<Type>  Types { get; set; }
    }

}

إن BookDBContext class يمثل الجزء المسؤول عن التعامل مع قاعدة بيانات الكتب فهو يقوم بتخزين و جلب وتحديث Book class instances  و Type class instances  في قاعدة البيانات.

نلاحظ أن BookDBContext class يرث من DbContext class وهذا ال class موجود في تقنية Entity Framework. من أجل أن نستطيع التعامل مع DbContext  و DbSet نحتاج لإضافة العبارة using في أول الملف:

using System.Data.Entity;

يمكن ايضا القيام بذلك من خلال النقر بزر الفأرة اليميني على الخطوط الحمراء المتعرجة والنقر على

;using System.Data.Entity

ملاحظة: هناك العديد من عبارات using الغير مستخدمة يفضل أن نقوم بإزالتها، يمكننا القيام بذلك من خلال النقر على الملف بزر الفأرة الأيمن  ثم النقر على Organize Usings ثم النقر على Remove Unused Usings

في هذا الدرس قمنا بإضافة  الـ Models أي قمنا بتمثيل البيانات التي نحتاجها لمشروعنا في مجموعة Classes، وفي الدرس القادم سنقوم بتعلم كيفية إنشاء اتصال مع سيرفر قواعد البيانات وذلك لتوليد قاعدة بيانات من ال Models الذي قمنا بإضافتها.

تغذية راجعة

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

 

هذه المقالة مستندة إلى سلسلة دروس مايكروسوفت الرسمية للـ ASP.NET MVC، وذلك لترتيب الدروس المناسب واعتقادي بسلاستها وأهمية نقلها إلى العربية بأسلوب مناسب وتجربة تتوافق مع الأدوات المتاحة لنا والمتوفرة في منطقتنا.

مدير تقني وشريك مؤسس لـ فسيلة تِك، مبرمج متعدد المهارات، مهتم في إنجاز أمور استثنائية في مجال التكنولوجيا وأعمل جاهداً لترك أثر إيجابي في الحياة

‎أضف رد

I don't publish guest or sponsored posts on this site. But thanks anyway. :)

:

‎بريدك الإلكتروني لن يظهر لأحد