در این جلسه از آموزش ASP.NET Core قصد داریم شروع کار با Entity Framework Core را آغاز نماییم و به معرفی و نصب NuGet Packages ها مورد نیاز بپردازیم. Entity Framework Core (EF Core) در واقع همان پلتفرم دسترسی به داده (Data Access) معروف مایکروسافت میباشد که به صورت سبکتر، متن باز(Open Source) و قابل توسعه است و قابلیت اجرا Cross-Functional)بروی چندین سیستم عامل را دارد. این پلتفرم یک Object Relational Mapper (ORM) میباشد که به توسعهدهندگان .NET این امکان را میدهد که با پایگاه داده با استفاده از اشیاء .NET ارتباط برقرار کند.
Entity Framework Core چیست؟
این فریمورک در واقع یک Object Relational Mapper (ORM) میباشد که به توسعهدهندگان .NET این امکان را میدهد که با پایگاه داده با استفاده از اشیاء .NET ارتباط برقرار کند. همچنین این فریمورک نسخه جدید از همان Entity Framework معروف مایکروسافت میباشد که سبکتر، قابل توسعه، Cross-Functional و Open Source میباشد.
این فریمورک یک رابط میان Domain Class و DB Context Class وب اپلیکیشن و پایگاه داده میباشد که امکان برقراری و کارکردن با پایگاه داده را برای توسعهدهندگان فراهم میکند. با استفاده از این فریم ورک، توسعه دهندگان نیاز به نوشتن کدهای کمتری برای انجام عملیات بروی پایگاه داده خواهند داشت.

رویکردهای Entity Framework Core (Code First & Database First)
دو رویکرد برای ایجاد Domain Class – DB Context Class و برقراری ارتباط با پایگاه داده توسط این فریمورک وجود دارید. رویکرد Code First و رویکرد Database First که تا حد زیادی نام آنها بیانگر عملکردشان میباشد. در رویکرد Code First ابتدا میبایست مدلهای مورد نیاز که به آنها Domain Class گفته میشود را ایجاد نماییم. سپس اقدام به ایجاد DB Context Class میکنیم که برای ایجاد آن نیازمند نصب NuGet Package مربوطه که در ادامه شرح خواهیم داد میباشیم. در نتیجه پایگاه داده بر اساس کلاسهای Domain و کلاس DB Context ایجاد میگردد.
اما در رویکرد Database First، کلاسهای Domain و کلاس DB Context بر اساس پایگاه داده و جداول موجود ایجاد میگردد. این روش برای حالتی مناسب است که پایگاه داده از قبل موجود میباشد.

Provider در Entity Framework Core
وظیفه Providerها امکان ارتباط EF Core با موتورهای پایگاه داده مختلف میباشد. ما برای ارتباط با پایگاههای مختلف مانند Microsoft SQL Server، MySQL، Oracle و دیگر پایگاه دادهها نیازمند نصب NuGet Package مربوطه میباشیم. لیست Providerهای مرتبط با پایگاه دادههای مختلف در این قسمت قابل مشاهده میباشد و میتوانیم از این لیست برای پیدا کردن نام پکیج مورد نیاز استفاده نماییم.

NuGet Packages های مورد نیاز برای کار با EF Core
ما برای شروع کار با EF Core میبایست پکیجهای مورد نیاز را بروی وباپلیکیشن خود نصب نماییم. برای نصب این پکیجها، میتوانیم از ابزار گرافیکی Manage NuGet Packages استفاده نماییم. برای این کار کافیست بروی Dependencies از ریشه پروژه مورد نظر، راست کلیک نمایید و گزینه Manage NuGet Packages را انتخاب نمایید. سپس در قسمت Brows به جستجوی پکیج های مورد نیاز میکنیم.
لیست پکیجهای مورد نیاز را در ادامه مشاهده خواهید کرد:
- Microsoft.EntityFrameworkCore : این پکیج حاوی کلاسهای اصلی مورد نیاز جهت کار با EF Core میباشد و جهت ایجاد DB Context Class نصب این پکیج الزامی میباشد.
- Microsoft.EntityFrameworkCore.Relational : علاوه بر Providerها در صورت نیاز به کارکردن با پایگاه دادههای رابطهای، (Relational) این پکیج نیز میبایست نصب گردد.
- Microsoft.EntityFrameworkCore.SqlServer : این پکیج که در واقع یک Provider میباشد جهت ارتباط با پایگاه داده SQL Server مورد نیاز میباشد که با توجه به پایگاه داده قابل تغییر میباشد.
- Microsoft.EntityFrameworkCore.Tools : جهت استفاده از فرامین NuGet Package Manager Console در Visual Studio این پکیج باید نصب گردد.

ایجاد کلاس DB Context
برای ایجاد این کلاس، در پوشه Models اقدام به ایجاد یک کلاس مینماییم. کلاس میبایست از DB Context ارثبری نماید که این کلاس در فضای نام Microsoft.EntityFrameworkCore قرار دارد. سپس اقدام به ایجاد Constructor برای کلاس ایجاد شده میکنیم. این کار را میتوان با زدن کلیدهای Ctrl + . بروی کلاس DB Context انجام دهید. سپس قسمت DBContextOption را برای کلاس ایجاد شده تغییر میدهیم.
using Microsoft.EntityFrameworkCore;
namespace DailyCostWebApplication.Models
{
public class WebAppDBContext : DbContext
{
public WebAppDBContext(DbContextOptions<WebAppDBContext> options) : base(options)
{
}
}
}
در جلسات آینده به تکمیل این کلاس خواهیم پرداخت و تنظیمات مربوطه را در کلاس Startup اعمال خواهیم نمود.
در صورت نیاز به جزئیات بیشتر، میتوانید ویدئو آموزشی این جلسه را تماشا نمایید. همچنین برای آگاهی از جلسات بعدی این دوره آموزشی، ما را در اینستاگرام، تلگرام، یوتیوب و آپارات دنبال کنید. ضمنا لیست کامل جلسات در این قسمت در دسترس شما میباشد و سورس کد این جلسه را میتوانید از GitHub ما دانلود نمایید.
دانلود اسلایدهای آموزشی این جلسه از اینجا