برای اینکه بتوانیم از Entity Framework به منظور انجام دستورهای CRUD توسط شی های درون برنامه NET Framework (در اینجا سی شارپ) استفاده کنیم، پیش از هر چیز باید یک مدل (Model) را ایجاد کرده باشیم، که وظیفه این مدل نگاشت موجودیت ها و رابطه میان آنها (که در لایه مدل مفهومی تعریف شده اند،) به جدول ها و رابطه های آنها درون پایگاه داده رابطه ای است که این جدول ها و رابطه میان آنها، در مدل لایه منطقی تعریف شده اند.

حال که مدل را در اختیار داریم، کلاسی درون برنامه سی شارپ از کلاس DbContext در فضای نام System.Data.Entity.DbContext ارث بری خواهد کرد. در مستندات Entity Framework به این کلاس که از کلاس DbContext ارث بری کرده است، Context Class یا به طور خلاصه Context گفته می شود. بنابراین‌ّٰ هرگاه از این پس واژه Context را به کار بردیم، منظور کلاسی است که از DbContext ارث بری کرده است.

درون بدنه Context (کلاس Context) خصوصیت های Collection از نوع کلاس دیگری به نام DbSet وجود دارند که هر کدام از این خصوصیت ها به یکی از موجودیت های درون مدل اشاره دارند. به طور مثال در کد زیر کلاس Context به نام ProductContext وجود دارد که از کلاس والد DbContext  ارث بری کرده است. درون آن دو خصوصیت Collection از نوع DbSet به نام های Categories و Products که به کلاس های موجودیت Category و Product اشاره دارند.

در واقع می توانیم اینطور بگوییم که ProductContext اشاره به پایگاه داده ای دارد که دو جدول در آن به نام Category و Product دارد که این دو جدول و درون برنامه توسط کلاس های همنام آنها تعریف شده اند. با Context (تاکید می کنیم کلاسی که از DbContext ارث بری کرده باشد) می توانیم کوئری ها را ایجاد و اجرا کنیم. متدهای متفاوت برای کوئری های متفاوت مانند متدهای ()Add  و ()Remove وجود دارند.

یک مدل، جزییاتی را در مورد چگونگی نگاشت میان کلاس ها و خصوصیت آنها به جدول ها و ستون های پایگاه داده را در خود نگهداری می کند. یک مدل را می توانیم به دو روش First Code و یا با استفاده از ابزار گرافیکی به نام EF Designer ایجاد کنیم. در ادامه دوره به طور کامل رویکرد Code First و استفاده از ابزارهای درون ویژوال استادیو توضیح داده شده اند.

۱ – Code First

در این مورد برنامه نویس برای ایجاد مدل، باید کدها را به صورت دستی بنویسد. سپس بر اساس کلاس های موجودیت و دیگر پیکربندی های تعیین شده برای مدل که توسط برنامه تعیین شده اند، وظیفه EF است که مدل را ایجاد کند و عملیات نگاشت دادن را در زمان اجرا (Runtime) انجام دهد. توجه کنید در این پاراگراف () یک واژه جدید به نام کلاس موجودیت (Entity Class) گفته شد. هر کلاس موجودیت یک کلاس ساده سی شارپ است که توسط خصوصیت های درونش (Property) یک جدول را تعریف می کند. پس از این پس واژه های کلاس موجودیت یا Entity Class به کلاسی در زبان سی شارپ اشاره دارد که یک موجودیت یا جدول را تعریف می کند.

۲ – EF Designer

اگر مطلب های پیشین را به یاد داشته باشید گفتیم می توانیم از ابزاری به نام EDMDesigner (یا EF Designer) درون محیط ویژوال استادیو برای ایجاد EDM استفاده کنیم که نتیجه آن فایلی با پسوند edmx است که درون آن سه زیر فایل با پسوندهای csdl و mdl و ssdl وجود دارد.

جمع بندی

در این مطلب سعی کردیم مفاهیم کلاس Context (یا Context) و کاربرد آن برای نوشتن و اجرای کوئری را آموزش دهیم. در مطلب های پیش رو به شما مثال هایی را نشان داده ایم که بیشتر با DbContext و DbSet آشنا می شوید. به طور کلی از Context برای هدف های زیر استفاده می شود:

۱ – مدیریت اتصال به پایگاه داده

۲ – نوشتن و اجرای کوئری ها مانند خواندن، درج، بروز رسانی و حذف داده ها

۳ – قابلیت پیگیری و ردیابی تغییرات (Change Tracking) – توضیح داده ایم که توسط متدهای ()saveChanges و یا ()saveChangesSync می توانیم تمامی تغییرات از تمامی کلاس های موجودیت را به درون پایگاه اعمال کنیم.

۴ – توانایی استفاده از قابلیت کَش (Caching)

۵ – مدیریت تراکنش ها – یک تراکنش مجموعه ای از چندین دستور است که عملیات های خواندن (Read) و نوشتن (Write) را بر روی اشیا پایگاه داده مانند جدول انجام می دهند.

همچنین توضیح دادیم که درون هر Context یک تا چندین خصوصیت Collection به صورت DbSet<TEntity> وجود دارد که در آن TEntity به یک کلاس موجودیت اشاره دارد و هر کلاس موجودیت درون برنامه به یک موجودیت یا جدول و خصوصیت ها یا ستون های آن اشاره دارد. برای آگاهی از نام متدهایی که کلاس Context از کلاس پایه DbContext به ارث می برد، می توانید اینجا را مطالعه کنید.

همچنین دو روش رویکرد Code First و استفاده از EDM Designer برای ایجاد مدل وجود دارند. مدل (Model) مفهومی است که تنها مربوط به زمینه Entity Framework نیست بلکه در ادامه خواهید دید که مفهوم مدل در ASP.NET MVC وجود دارد. به طور کلی مدل لایه ای از برنامه است که ساختار پایگاه داده و چگونگی ارتباط به آن و واکشی، ذخیره سازی و تغییر و پاک کردن دادها را مشخص می کند.