«Entity Framework» به طور خلاصه با نام «EF» نیز شناخته میشود. این فریمورک، سبکوزن، اوپن سورس، مقیاسپذیر و چندپلتفرمی است. Entity Framework توسط مایکروسافت و با هدف مدیریت دسترسی به پایگاه داده در زبانهای برنامه نویسی مانند «#C» ایجاد شده است. این فریمورک طوری طراحی شده است تا با فریمورکهای «NET Core.» و «NET.» کار کند. Entity Framework روش برنامه نویسی «ORM» را ارائه میدهد. این روش به توسعهدهندگان کمک میکند تا با استفاده از اشیا و کلاسهای برنامهنویسی در «NET.» با پایگاههای داده کار کنند. قبلا توسعهدهندگان برای دسترسی به دادهها از کدهای زیادی استفاده میکردند. با وجود این ابزار، بیشتر این کدها حذف شدهاند. به همین دلیل، امروزه آموزش Entity Framework در سی شارپ به یکی از مهارتهای ضروری توسعهدهندگان تبدیل شده است.
آنچه در این مطلب میآموزید:
-
با Entity Framework و کاربرد آن در زبان سی شارپ آشنا میشویم.
-
متوجه میشویم که ORM چیست و اینکه Entity Framework هم ORM است.
-
با روشهای «اول پایگاه داده» (Database First) و «اول کد» (Code First) آشنا میشویم.
-
میاموزیم که چه زمانی از «اول پایگاه داده» و چه زمانی از «اول کد» استفاده کنیم.
-
با استفاده از مثال عملی روش نصب و استفاده از Entity Framework را یاد میگیریم.
-
با مهمترین مزایای استفاده از Entity Framework در سی شارپ آشنا میشویم.

در این مطلب از مجله فرادرس، با Entity Framework در سی شارپ آشنا میشویم. ابتدا این فریمورک را معرفی کرده و سپس رویکردهای اصلی برای استفاده از آن را توضیح میدهیم. سپس با کمک مثالی روش نصب Entity Framework و استفاده از آن برای اتصال #C به پایگاه داده را بررسی میکنیم. در آخر مطلب هم به طور خلاصه و کامل ORM را معرفی کرده و مزایای استفاده از Entity Framework را نوشتیم.
Entity Framework در سی شارپ چیست؟
Entity Framework در سال ۲۰۰۸ توسط مایکروسافت منتشر شده است. توسعهدهندگان با کمک این فریمورک میتوانند به صورت مستقیم از درون کدهای خود با پایگاه داده ارتباط برقرار کرده و با دادهها کار کنند. زیرا Entity Framework روش برنامه نویسی ORM را ارائه میدهد. برای آموزش Entity Framework در سی شارپ لازم است که با مفهوم ORM نیز آشنا باشیم.
کلمه «ORM» سرنامی از عبارت «نگاشت شیء رابطهای» (Object-Relational Mapping) است. با استفاده از ORM به کار بردن اشیا و جزئیات مربوط به آنها سادهتر شده است. این فریمورک در طول سالها توسعه پیدا کرده است. اکنون Entity Framework پرکاربردترین ORM برای کار با زبانهای مایکروسافت، مانند سی شارپ و ویژوال بیسیک است. Entity Framework بر اساس «ADO.NET» ساخته شده است. در بخش انتهایی مطلب ORM را به شکل کاملتری توضیح دادهایم.
«موجودیتها» (Entities) در Entity Framework اهمیت زیادی دارند. به هر شیء در کدها موجودیت گفته میشود. هر موجودیت دارای یک ساختار معادل در پایگاه داده است. میتوانیم موجودیتها را مانند جدولهای پایگاه داده در نظر بگیریم. ویژگیهای هر موجودیت هم ستونهای این جدول هستند. Entity Framework موجودیتها را به جداول پایگاه داده تبدیل میکند. Entity Framework هم دادهها را از جدول استخراج کرده و مانند شیء برمیگرداند و هم برعکس، یعنی اطلاعات اشیاء را از کدها به جدول پایگاه داده میفرستد.

در زمان کار با Entity Framework دو رویکرد اصلی وجود دارند.
- «اول پایگاه داده» (Database First)
- «اول کد» (Code First)
در ادامه مطلب با این رویکردها آشنا میشویم.
رویکردهای کار با Entity Framework
Entity Framework از دو روش مختلف برای مدیریت دادهها استفاده میکند. بین این دو روش، تفاوت مهمی وجود دارد. هر توسعهدهنده باید با توجه به شرایط پروژه، روش مورد نظر خود را انتخاب کند. در این بخش، هر دو روش را به صورت خلاصه معرفی کردهایم.
- اول پایگاه داده: از این روش وقتی استفاده میکنیم که از قبل، پایگاه دادهای وجود داشته باشد. کدهای برنامه را با هدف کار بر روی این پایگاه داده مینویسیم. کدهای نوشته شده، پایگاه داده را تغییر نمیدهند.
- اول کد: از این روش هنگامی استفاده میکنیم که هنوز هیچ پایگاه دادهای ایجاد نشده است. همزمان با اجرای پروژه، پایگاه داده جدید خود را هم با کدنویسی ایجاد میکنیم.

بیشتر توسعهدهندگان روش «اول کد» (Code First) را ترجیح میدهند. زیرا خودشان موجودیتها را مینویسند. موجودیتها همان کلاسها و صفات آنها در زبان #C هستند. سپس با استفاده از Entity Framework بر روی پایگاه داده کار میکنند.
تمام کدها به زبان سی شارپ نوشته میشوند. دیگر توسعهدهندگان نیاز ندارند که تمرکز زیادی بر روی پایگاه داده بگذارند. فقط کافی است که کلاس ایجاد کنند. سپس میتوانند آن کلاس را به عنوان موجودیت به فریمورک Entity Framework معرفی کنند. در نهایت هم پایگاه داده را بهروزرسانی میکنند.
اما در روش «اول پایگاه داده» (Database First)، پایگاه داده از قبل، ساخته شده است. سپس برنامه نویسان موجودیتهای مورد استفاده در کدهای خود را از پایگاه داده بدست میآورند. این روش برای زمانهایی مناسب است که پایگاه داده، موجود باشد. در این شرایط برنامه نویسان نباید این پایگاه داده را از اول ایجاد کنند.
یادگیری سی شارپ با کمک فیلم های آموزشی
استفاده از فیلمهای آموزشی مربوط به سی شارپ در فرادرس، یادگیری این زبان را برای همه افراد مبتدی و حرفهای آسان کرده است. افراد حرفهای همیشه به دنبال بهترین منابعی برای آموزش سریع و کامل مطالب جدید هستند. فیلمهای آموزشی فرادرس، توسط اساتید با تجربه تهیه شده و مطالب جدیدی در آنها تدریس شدهاند. فیلمهای فرادرس از مباحث اولیهای مانند سینتکس تا موضوعات پیشرفتهای مثل برنامه نویسی شیءگرا و غیره را پوشش میدهند. بنابراین افراد حرفهای هم میتوانند از فیلمهای فرادرس استفاده ببرند. با مشاهده فیلمهای آموزشی در مدت زمان کوتاهی سی شارپ را یاد گرفته و در آن مهارت پیدا میکنید.

C# به عنوان زبانی قدرتمند، امن و انعطافپذیر شناخته میشود. این زبان برنامه نویسی در حوزههای گوناگون مانند ساخت بازیهای کامپیوتری، نرمافزارهای دسکتاپ، وب، موبایل و غیره کاربرد دارد. بنابراین یادگرفتن سی شارپ، میتواند موقعیتهای شغلی زیادی را در مقابل هر کسی قرار دهد. با توجه به نیاز کشور به نیرو انسانی متخصص، فرادرس، تلاش کرده است تا فیلمهای آموزشی باکیفیتی را تولید کند. برای یاد گرفتن زبان برنامه نویسی سی شارپ کافی است به وبسایت فرادرس سر بزنید و دوره مناسب خود را انتخاب کنید.
چند مورد از فیلمهای این مجموعه آموزشی را در بالا معرفی کردهایم. در ادامه مطلب، آموزش Entity Framework در سی شارپ را با تمرکز بر روی رویکرد اول کد ادامه دادهایم.
مثال عملی
قبل از بررسی مثالی درباره آموزش Entity Framework در سی شارپ لازم است چند مورد را به عنوان پیشنیاز فراهم کنیم. این موارد را در فهرست زیر نوشتهایم.
- «NET Core SDK.»: میتوانید این ابزار را از سایت رسمی آن در لینک (+) دانلود کرده و بر روی سیستم خود نصب کنید.
- ویژوال استودیو یا ویژوال استودیو کد: برای نوشتن و اجرای کدها باید از IDE یا ویرایشگر کد مناسب، استفاده کنید. یکی از این دو مورد را نصب کرده و به کار ببرید.
- SQL Server: پایگاه داده SQL Server را بر روی کامپیوتر خود نصب و راهاندازی کنید.
در این بخش از مطلب، آموزش Entity Framework در سی شارپ را با کمک مثال عملی ادامه دادهایم. در این مثال، روش نصب، فعالسازی و اتصال پایگاه داده به سی شارپ را بررسی کردهایم. اما برای یادگیری کاملتر این فریمورک و نحوه کار با آن پیشنهاد میکنیم که فیلم آموزش کاربردی Entity Framework در C# را از فرادرس مشاهده کنید. به منظور کمک به مخاطبان مجله، لینک این فیلم را در پایین نیز قرار دادهایم.
بعد از فراهم کردن موارد بالا به عنوان پیشنیاز میتوانیم پیادهسازی مثال خود را شروع کنیم.
گام اول: ایجاد پروژه NET Core.
ابتدا باید رابط خط فرمان سیستم یا IDE خود را باز کنیم. سپس برای ایجاد پروژه «NET Core.» دستور زیر را در این محیط نوشته و با فشردن دکمه «Enter» آن را اجرا میکنیم.
dotnet new console -n EFCoreExample
دستور بالا، اپلیکیشن کنسولی جدیدی به نام EFCoreExample ایجاد میکند.
گام دوم: نصب Entity Framework
این مطلب به آموزش Entity Framework در سی شارپ مربوط است. قبل از یاد گرفتن کار با این فریمورک باید بتوانیم آن را راهاندازی کنیم. برای رسیدن به این هدف، پکیج «EntityFrameworkCore.SqlServer» را با کمک دستور زیر، نصب میکنیم. ابتدا به پوشه مربوط به پروژه خود میرویم. سپس، دستور زیر را در خط فرمان نوشته و اجرا میکنیم.
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
البته برای نصب Entity Framework میتوانید از نرمافزار مدیریت پکیج Nuget هم – مانند تصویر زیر -استفاده کنید.
گام سوم: ساخت کلاس
در این مثال، کلاسی را برای ذخیرهسازی اطلاعات کاربران ایجاد میکنیم. با کمک این کلاس، نمونههایی را به وجود میآوریم که باید در پایگاه داده، ذخیره شوند. ابتدا فایل جدیدی با نام «User.cs» در پروژه خود ایجاد میکنیم. سپس کلاس User را مطابق با کدهای پایین، مینویسیم.
گام چهارم: ساخت DbContext
Entity Framework برای مدیریت پایگاه داده و جدولهای آن از کلاس DbContext استفاده میکند. برای ساخت این کلاس، ابتدا فایل جدیدی به نام «AppDbContext.cs» بسازید. سپس در این فایل، کلاس DbContext را مانند کدهای زیر تعریف کنید.
توجه: نام فایلهای ساخته شده در این مثال، اختیاری هستند. به عنوان توسعهدهنده میتوانید از هر نام دیگری استفاده کنید. فقط باید کدها را هم مطابق با آن نام تغییر بدهید.
در کدهای بالا کلاس AppDbContext که به صورت public نوشته شده از کلاس DbContext ارثبری کرده است. یعنی به صورت مستقیم از کلاس DbContext استفاده نکردهایم. برای درک بهتر این کد بهتر است که با مفهوم ارثبری در سی شارپ آشنا شوید. به این منظور پیشنهاد میکنیم مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.
در کدهای بالا از DbSet<> برای نمایش جدولها پایگاه داده استفاده شده است. این جدولها با کمک موجودیتهای تعریف شده در کدها به وجود آمدهاند. متد OnModelCreating() به متصل شدن موجودیتها به پایگاه داده کمک میکند. هر موجودیتی باید کلاس مخصوص به خود را داشته باشد. در این کلاس، روش اتصال بین موجودیت و پایگاه داده گفته شده است.
به کلاس بالا، کلاس نگاشت موجودیت یا «Map Class» گفته میشود.
گام پنجم: پیکربندی ارتباط با پایگاه داده
برای کار کردن کلاس DbContext ، باید پایگاه داده را پیکربندی کنیم. برای این کار، تنظیمات مربوط به ارتباط با پایگاه داده را در ConnectionString ذخیره میکنیم. ابتدا به فایل «Appsettings.json» رفته و سپس کد زیر را به آن اضافه کنید.
بعد از آن هم کد زیر را در فایل «Program.cs» بنویسید.
گام ششم: ساخت Migration
تا به اینجای کار، کلاسهای User و DbContext را ایجاد کردهایم. اکنون زمان ساخت و اعمال «Migration» پایگاه داده است. در دایرکتوری پروژه، دستورات زیر را اجرا کنید.
dotnet ef migrations add InitialMigration dotnet ef database update
البته میتوانیم از «کنسول مدیریت بسته» (Package Manager Console) نیز استفاده کنیم. به این منظور باید کدهای زیر را به کار ببریم.
Add-Migration InitialMigration Update-Database
این دستورات Migration اولیه پایگاه داده را میسازند. سپس این Migration را به SQL Server اضافه میکنند. قبل از این مرحله، باید ConnectionString را در فایل «Appsettings.json» قرار داده باشیم.

در بخش بعدی، روش استفاده از Entity Framework برای ساخت جدول در پایگاه داده را بررسی کردهایم.
گام هفتم: استفاده از Entity Framework در اپلیکیشن
مهمترین بخش از آموزش Entity Framework در سی شارپ دانستن روش استفاده از این ابزار در اپلیکیشنها است. بعد از اینکه مراحل بالا را پشت سر گذاشتیم، اکنون باید از Entity Framework برای کار با پایگاه داده، استفاده کنیم. در کادر زیر، مثالی درباره روش افزودن کاربر جدید به پایگاه داده نوشتهایم.
چگونه با استفاده از فیلمهای پروژه محور فرادرس سی شارپ را یاد بگیریم؟
در این مطلب، به آموزش Entity Framework در سی شارپ پرداختهایم. برای آموزش بهتر این فریمورک، مثالی را هم بررسی کردهایم. در واقع، بررسی مثالهای عملی یکی از بهترین روشها برای یادگیری هر علمی است. به همین دلیل در فرادرس فیلمهای پروژه محور زیادی تولید و منتشر شدهاند. فیلمهای پروژه محور از چنین مثالهایی محتوای بسیار بیشتری دارند. به منظور ورود به بازار کار و اجرای پروژههای واقعی باید مهارت خود را تقویت کنیم. برای انجام این کار هم، بررسی، تمرین و اجرای پروژههای عملی بهترین روش است. فرادرس نیز برای کمک به یادگیری هرچه بهتر سی شارپ، فیلمهای پروژهمحور زیادی تولید کرده است.
در پایین چند مورد از فیلمهای پروژه محور سی شارپ را مشاهده میکنید.
برای دیدن سایر فیلمها بر روی تصویر زیر کلیک کرده و به صفحه اصلی این مجموعه آموزشی هدایت شوید.

در ادامه مطلب به بررسی مفهوم ORM پرداختهایم و گفتهایم که چرا Entity Framework هم یک ORM است.
ORM چیست؟
در این بخش از مطلب آموزش Entity Framework در سی شارپ، مفهوم ORM را بررسی کردهایم. ORM روشی در برنامه نویسی است. این روش به توسعهدهندگان برای تبدیل کردن داده بین سیستمهای ناسازگار با هم کمک میکند. برای مثال، با کمک این روش، زبانهای برنامه نویسی شیءگرایانهای مانند سی شارپ، جاوا و غیره به راحتی با پایگاههای داده رابطهای مانند SQL Server و MySQL و اوراکل ارتباط برقرار میکنند.
ORM به توسعهدهندگان کمک میکند که با موجودیتهای پایگاه داده، مانند اشیاء رفتار کنند. یعنی اینکه دیگر با جدولها و ستونهای پایگاه داده کار نمیکنیم. بلکه از کلاسها و اشیاء در برنامه استفاده میکنیم. ORM میتواند از روی جدولها، کلاس بسازد و برعکس. یعنی اینکه از روی کلاسها هم میتواند جدولهای پایگاه داده را ایجاد کند. زیرا برای ساخت جدول بر اساس کلاسهای مختلف میتواند کدهای SQL لازم را تولید کند.
بیشتر اوقات توسعهدهندگان با اپلیکیشنهای داده محور کار میکنند. فریمورکهای ORM خودشان کدهای ضروری SQL را تولید میکنند. در واقع این فریمورکها میتوانند تمام عملیات CRUD را در پایگاه داده اجرا کنند. عملیات CRUD مخفف چهار دستور اصلی برای ساخت «Create»، خواندن «Read»، بهروزرسانی «Update» و حذف کردن «Delete» دادهها از پایگاه داده است.
ORM خودش ارتباط با پایگاه داده را ایجاد میکند. سپس دستورات مورد نظر توسعهدهنده را به زبان SQL ترجمه کرده و اجرا میکند. همچنین، ORM مراقب است که دادهها به درستی رد و بدل شوند. در پایان هم ارتباط باز شده با پایگاه داده را خودش میبندد. به عبارت ساده چنین میتوان گفت که با استفاده از ORM دیگر نیازی به نوشتن کدهای مربوط به مدیریت پایگاه داده توسط برنامه نویسان وجود ندارد.
مزایای استفاده از Entity Framework
در این بخش از مطلب آموزش Entity Framework در سی شارپ، چند مورد از مهمترین دلایل استفاده از ORM-هایی مانند Entity Framework را توضیح دادهایم.
- راحتتر شدن دسترسی به دادهها: ORM-ها بخشهای سخت کار با دادهها را برعهده میگیرند. با کمک Entity Framework، توسعهدهندگان بهجای نوشتن کوئریهای پیچیده SQL، از اشیا برای کار با پایگاه داده استفاده میکنند.
- کمتر شدن کدهای تکراری: Entity Framework مانند تمام فریمورکهای ORM به صورت خودکار کوئریهای SQL تولید میکند. این فریمورک ارتباط با پایگاه داده را مدیریت کرده و تمام عملیات CRUD را اجرا میکند. بخاطر وجود این ویژگیها تعداد کدهای تکراری بسیار کمتر میشوند.
- افزایش بهرهوری: وقتی توسعهدهندگان بهجای کار با جزئیات پایگاه داده روی منطق اپلیکیشن تمرکز کنند، سریعتر برنامه مینویسند. این کار باعث افزایش بهرهوری آنها میشود.
- توانایی «چندپلتفرمی» (Cross-Platform): Entity Framework میتواند بر روی پلتفرمهای مختلف و با پایگاههای داده متنوع کار کند. در نتیجه با کمک این فریمورک ساختن اپلیکیشنهای چندپلتفرمی سادهتر شده است.
- افزایش کارآمدی: Entity Framework از «بارگذاری کند» (Lazy Loading)، «بارگذاری مشتاقانه» (Eager Loading) و «کَش کردن» (Caching) پشتیبانی میکند. این توانایی باعث بهینهسازی عملیات فراخوانی دادهها شده و در نتیجه کارآمدی را افزایش میدهند.
- «یکپارچگی دادهها» (Data Integrity): Entity Framework میتواند «همزمانی» (Concurrency) و تبادل داده را مدیریت کند. این مسئله به حفظ امنیت و سلامت دادهها کمک میکند. توسعهدهندگان نیازی ندارند برای اجرای این عملیات و حفظ یکپارچگی دادهها، کدهای اضافی بنویسند.

جمعبندی
Entity Framework از نوع ابزارهای ORM است. این فریمورک به توسعهدهندگان کمک میکند تا با پایگاههای داده رابطهای از طریق کلاسها و اشیاء تعامل داشته باشند. درنتیجه، دیگر نیازی به نوشتن کدهای SQL پیچیده ندارند. دو رویکرد اصلی استفاده از آن شامل «اول کد» و «اول پایگاه داده» است. در مطلب بالا مراحل نصب، پیادهسازی کلاسها، ساخت DbContext، ایجاد ارتباط با پایگاه داده و اجرای Migration به صورت گامبهگام شرح داده شدهاند. در پایان نیز مزایای استفاده از Entity Framework و اهمیت یادگیری آن برای توسعه نرمافزارهای دادهمحور توضیح داده شده است.
در این مطلب از مجله فرادرس با موفقیت Entity Framework را بر روی کامپیوتر خود نصب کرده و با کمک آن بین #C و پایگاه داده ارتباط ایجاد کردیم. توضیح دادیم که با استفاده از اشیا تعریف شده در #C چگونه میتوان جدولهای پایگاه داده را ایجاد و مدیریت کرد. توسعهدهندگان اغلب اوقات بر روی پروژههای دادهمحور کار میکنند. این نوع از پروژهها برای اجرای وظایف خود نیاز دائم به کار با دادهها دارند. در نتیجه توسعهدهندگان باید مهارتهای مورد نیاز را برای برقرار ارتباط بین زبان سی شارپ و پایگاههای داده داشته باشند. یکی از بهترین مهارتها توانایی کار با فریمورکهایی مانند Entity Framework است.
source